diff options
author | 2015-08-31 16:16:14 -0700 | |
---|---|---|
committer | 2015-09-03 10:17:16 -0700 | |
commit | c21e4e67861f38e2ebce3cce633d01fcb8de5f1f (patch) | |
tree | 1ddaa3d51fa4f4cf35761d722e29bd6dfe68e630 | |
parent | ce209462cc1a7ce235e5ac0d0e6db6b402f73441 (diff) |
Make format args explicit in DocString.
Previously it was not clear that passing a single argument to
DocString.text, DocString.append, or DocString.uri would be treated as
a format string. With this change, the 'text', 'append', and 'uri'
methods take literal strings, and the new 'format', 'appendFormat',
and 'formattedUri' methods take format strings.
Bug: 23782192
Change-Id: I9a094575f0831de6659033052305f918c71ac8b7
-rw-r--r-- | tools/ahat/src/DocString.java | 39 | ||||
-rw-r--r-- | tools/ahat/src/DominatedList.java | 2 | ||||
-rw-r--r-- | tools/ahat/src/HeapTable.java | 4 | ||||
-rw-r--r-- | tools/ahat/src/ObjectHandler.java | 10 | ||||
-rw-r--r-- | tools/ahat/src/ObjectsHandler.java | 2 | ||||
-rw-r--r-- | tools/ahat/src/OverviewHandler.java | 2 | ||||
-rw-r--r-- | tools/ahat/src/SiteHandler.java | 8 | ||||
-rw-r--r-- | tools/ahat/src/SitePrinter.java | 2 | ||||
-rw-r--r-- | tools/ahat/src/Value.java | 8 |
9 files changed, 49 insertions, 28 deletions
diff --git a/tools/ahat/src/DocString.java b/tools/ahat/src/DocString.java index 1d997dc969..19666dea8c 100644 --- a/tools/ahat/src/DocString.java +++ b/tools/ahat/src/DocString.java @@ -33,11 +33,18 @@ class DocString { /** * Construct a new DocString, initialized with the given text. - * Format arguments are supported. */ - public static DocString text(String format, Object... args) { + public static DocString text(String str) { DocString doc = new DocString(); - return doc.append(format, args); + return doc.append(str); + } + + /** + * Construct a new DocString, initialized with the given formatted text. + */ + public static DocString format(String format, Object... args) { + DocString doc = new DocString(); + return doc.appendFormat(format, args); } /** @@ -58,15 +65,22 @@ class DocString { /** * 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); + public DocString append(String text) { mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(text)); return this; } + /** + * Append formatted text to the given doc string. + * Returns this object. + */ + public DocString appendFormat(String format, Object... args) { + append(String.format(format, args)); + return this; + } + public DocString append(DocString str) { mStringBuilder.append(str.html()); return this; @@ -101,10 +115,9 @@ class DocString { /** * Convenience function for constructing a URI from a string with a uri - * known to be valid. Format arguments are supported. + * known to be valid. */ - public static URI uri(String format, Object... args) { - String uriString = String.format(format, args); + public static URI uri(String uriString) { try { return new URI(uriString); } catch (URISyntaxException e) { @@ -113,6 +126,14 @@ class DocString { } /** + * Convenience function for constructing a URI from a formatted string with + * a uri known to be valid. + */ + public static URI formattedUri(String format, Object... args) { + return uri(String.format(format, args)); + } + + /** * Render the DocString as html. */ public String html() { diff --git a/tools/ahat/src/DominatedList.java b/tools/ahat/src/DominatedList.java index 53d1073ed1..123d8be82b 100644 --- a/tools/ahat/src/DominatedList.java +++ b/tools/ahat/src/DominatedList.java @@ -140,7 +140,7 @@ class DominatedList { // (showing X of Y objects - show none - show less - show more - show all) private static void printMenu(Doc doc, Query query, int shown, int all) { DocString menu = new DocString(); - menu.append("(%d of %d objects shown - ", shown, all); + menu.appendFormat("(%d of %d objects shown - ", shown, all); if (shown > 0) { int less = Math.max(0, shown - kIncrAmount); menu.appendLink(query.with("dominated", 0), DocString.text("show none")); diff --git a/tools/ahat/src/HeapTable.java b/tools/ahat/src/HeapTable.java index 60bb38780a..37d58164a8 100644 --- a/tools/ahat/src/HeapTable.java +++ b/tools/ahat/src/HeapTable.java @@ -76,10 +76,10 @@ class HeapTable { for (Heap heap : heaps) { long size = config.getSize(elem, heap); total += size; - vals.add(DocString.text("%,14d", size)); + vals.add(DocString.format("%,14d", size)); } if (showTotal) { - vals.add(DocString.text("%,14d", total)); + vals.add(DocString.format("%,14d", total)); } for (ValueConfig<T> value : values) { diff --git a/tools/ahat/src/ObjectHandler.java b/tools/ahat/src/ObjectHandler.java index eecd7d18fb..5e321e267e 100644 --- a/tools/ahat/src/ObjectHandler.java +++ b/tools/ahat/src/ObjectHandler.java @@ -39,7 +39,7 @@ class ObjectHandler extends AhatHandler { long id = query.getLong("id", 0); Instance inst = mSnapshot.findInstance(id); if (inst == null) { - doc.println(DocString.text("No object with id %08xl", id)); + doc.println(DocString.format("No object with id %08xl", id)); return; } @@ -53,10 +53,10 @@ class ObjectHandler extends AhatHandler { ClassObj cls = inst.getClassObj(); doc.descriptions(); doc.description(DocString.text("Class"), Value.render(cls)); - doc.description(DocString.text("Size"), DocString.text("%d", inst.getSize())); + doc.description(DocString.text("Size"), DocString.format("%d", inst.getSize())); doc.description( DocString.text("Retained Size"), - DocString.text("%d", inst.getTotalRetainedSize())); + DocString.format("%d", inst.getTotalRetainedSize())); doc.description(DocString.text("Heap"), DocString.text(inst.getHeap().getName())); doc.end(); @@ -89,7 +89,7 @@ class ObjectHandler extends AhatHandler { doc.table(new Column("Index", Column.Align.RIGHT), new Column("Value")); Object[] elements = array.getValues(); for (int i = 0; i < elements.length; i++) { - doc.row(DocString.text("%d", i), Value.render(elements[i])); + doc.row(DocString.format("%d", i), Value.render(elements[i])); } doc.end(); } @@ -146,7 +146,7 @@ class ObjectHandler extends AhatHandler { if (bitmap != null) { doc.section("Bitmap Image"); doc.println(DocString.image( - DocString.uri("bitmap?id=%d", bitmap.getId()), "bitmap image")); + DocString.formattedUri("bitmap?id=%d", bitmap.getId()), "bitmap image")); } } diff --git a/tools/ahat/src/ObjectsHandler.java b/tools/ahat/src/ObjectsHandler.java index 066c9d59cd..4e9c42e566 100644 --- a/tools/ahat/src/ObjectsHandler.java +++ b/tools/ahat/src/ObjectsHandler.java @@ -53,7 +53,7 @@ class ObjectsHandler extends AhatHandler { new Column("Object")); for (Instance inst : insts) { doc.row( - DocString.text("%,d", inst.getSize()), + DocString.format("%,d", inst.getSize()), DocString.text(inst.getHeap().getName()), Value.render(inst)); } diff --git a/tools/ahat/src/OverviewHandler.java b/tools/ahat/src/OverviewHandler.java index 6e6c3235ce..f49c009b30 100644 --- a/tools/ahat/src/OverviewHandler.java +++ b/tools/ahat/src/OverviewHandler.java @@ -38,7 +38,7 @@ class OverviewHandler extends AhatHandler { doc.descriptions(); doc.description( DocString.text("ahat version"), - DocString.text("ahat-%s", OverviewHandler.class.getPackage().getImplementationVersion())); + DocString.format("ahat-%s", OverviewHandler.class.getPackage().getImplementationVersion())); doc.description(DocString.text("hprof file"), DocString.text(mHprof.toString())); doc.end(); diff --git a/tools/ahat/src/SiteHandler.java b/tools/ahat/src/SiteHandler.java index 8fbc17667f..0a9381ef24 100644 --- a/tools/ahat/src/SiteHandler.java +++ b/tools/ahat/src/SiteHandler.java @@ -61,7 +61,7 @@ class SiteHandler extends AhatHandler { public DocString render(Site element) { return DocString.link( - DocString.uri("site?stack=%d&depth=%d", + DocString.formattedUri("site?stack=%d&depth=%d", element.getStackId(), element.getStackDepth()), DocString.text(element.getName())); } @@ -87,11 +87,11 @@ class SiteHandler extends AhatHandler { for (Site.ObjectsInfo info : infos) { String className = AhatSnapshot.getClassName(info.classObj); doc.row( - DocString.text("%,14d", info.numBytes), + DocString.format("%,14d", info.numBytes), DocString.link( - DocString.uri("objects?stack=%d&depth=%d&heap=%s&class=%s", + DocString.formattedUri("objects?stack=%d&depth=%d&heap=%s&class=%s", site.getStackId(), site.getStackDepth(), info.heap.getName(), className), - DocString.text("%,14d", info.numInstances)), + DocString.format("%,14d", info.numInstances)), DocString.text(info.heap.getName()), Value.render(info.classObj)); } diff --git a/tools/ahat/src/SitePrinter.java b/tools/ahat/src/SitePrinter.java index 9c0c2e0efd..be87032a2c 100644 --- a/tools/ahat/src/SitePrinter.java +++ b/tools/ahat/src/SitePrinter.java @@ -51,7 +51,7 @@ class SitePrinter { str.append("→ "); } str.appendLink( - DocString.uri("site?stack=%d&depth=%d", + DocString.formattedUri("site?stack=%d&depth=%d", element.getStackId(), element.getStackDepth()), DocString.text(element.getName())); return str; diff --git a/tools/ahat/src/Value.java b/tools/ahat/src/Value.java index 22c3b8fd4f..9b483faa32 100644 --- a/tools/ahat/src/Value.java +++ b/tools/ahat/src/Value.java @@ -45,7 +45,7 @@ class Value { // Annotate Strings with their values. String stringValue = InstanceUtils.asString(inst); if (stringValue != null) { - link.append("\"%s\"", stringValue); + link.appendFormat("\"%s\"", stringValue); } // Annotate DexCache with its location. @@ -54,14 +54,14 @@ class Value { link.append(" for " + dexCacheLocation); } - URI objTarget = DocString.uri("object?id=%d", inst.getId()); + URI objTarget = DocString.formattedUri("object?id=%d", inst.getId()); DocString formatted = DocString.link(objTarget, link); // Annotate bitmaps with a thumbnail. Instance bitmap = InstanceUtils.getAssociatedBitmapInstance(inst); String thumbnail = ""; if (bitmap != null) { - URI uri = DocString.uri("bitmap?id=%d", bitmap.getId()); + URI uri = DocString.formattedUri("bitmap?id=%d", bitmap.getId()); formatted.appendThumbnail(uri, "bitmap image"); } return formatted; @@ -74,7 +74,7 @@ class Value { if (val instanceof Instance) { return renderInstance((Instance)val); } else { - return DocString.text("%s", val); + return DocString.format("%s", val); } } } |