diff options
author | 2015-07-15 16:01:58 -0700 | |
---|---|---|
committer | 2015-08-25 09:34:23 -0700 | |
commit | b730b78dac047c6d8ead93ad77605bcb7414f5ce (patch) | |
tree | feda8437b927954bcc849a6c5df6c11d46104355 /tools/ahat/src/DocString.java | |
parent | 24011e738d77dedb28c1b4d6ff34445cc2acc4a7 (diff) |
ahat - An android heap dump viewer. Initial checkin.
ahat is an android-aware heap dump viewer based on perflib with a
simple html interface.
Change-Id: I7c18a7603dbbe735f778a95cd047f4f9ec1705ef
Diffstat (limited to 'tools/ahat/src/DocString.java')
-rw-r--r-- | tools/ahat/src/DocString.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tools/ahat/src/DocString.java b/tools/ahat/src/DocString.java new file mode 100644 index 0000000000..1d997dc969 --- /dev/null +++ b/tools/ahat/src/DocString.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ahat; + +import com.google.common.html.HtmlEscapers; +import java.net.URI; +import java.net.URISyntaxException; + +/** + * A class representing a small string of document content consisting of text, + * links, images, etc. + */ +class DocString { + private StringBuilder mStringBuilder; + + public DocString() { + mStringBuilder = new StringBuilder(); + } + + /** + * Construct a new DocString, initialized with the given text. + * Format arguments are supported. + */ + public static DocString text(String format, Object... args) { + DocString doc = new DocString(); + return doc.append(format, args); + } + + /** + * Construct a new DocString, initialized with the given link. + */ + public static DocString link(URI uri, DocString content) { + DocString doc = new DocString(); + return doc.appendLink(uri, content); + + } + + /** + * Construct a new DocString initialized with the given image. + */ + public static DocString image(URI uri, String alt) { + return (new DocString()).appendImage(uri, alt); + } + + /** + * Append literal text to the given doc string. + * Format arguments are supported. + * Returns this object. + */ + public DocString append(String format, Object... args) { + String text = String.format(format, args); + mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(text)); + return this; + } + + public DocString append(DocString str) { + mStringBuilder.append(str.html()); + return this; + } + + public DocString appendLink(URI uri, DocString content) { + mStringBuilder.append("<a href=\""); + mStringBuilder.append(uri.toASCIIString()); + mStringBuilder.append("\">"); + mStringBuilder.append(content.html()); + mStringBuilder.append("</a>"); + return this; + } + + public DocString appendImage(URI uri, String alt) { + mStringBuilder.append("<img alt=\""); + mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(alt)); + mStringBuilder.append("\" src=\""); + mStringBuilder.append(uri.toASCIIString()); + mStringBuilder.append("\" />"); + return this; + } + + public DocString appendThumbnail(URI uri, String alt) { + mStringBuilder.append("<img height=\"16\" alt=\""); + mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(alt)); + mStringBuilder.append("\" src=\""); + mStringBuilder.append(uri.toASCIIString()); + mStringBuilder.append("\" />"); + return this; + } + + /** + * Convenience function for constructing a URI from a string with a uri + * known to be valid. Format arguments are supported. + */ + public static URI uri(String format, Object... args) { + String uriString = String.format(format, args); + try { + return new URI(uriString); + } catch (URISyntaxException e) { + throw new IllegalStateException("Known good uri has syntax error: " + uriString, e); + } + } + + /** + * Render the DocString as html. + */ + public String html() { + return mStringBuilder.toString(); + } +} |