diff options
author | 2017-08-23 09:33:02 +0100 | |
---|---|---|
committer | 2017-09-21 11:19:07 +0100 | |
commit | 26a982ad022a254ac57f84e996c31b4e271de028 (patch) | |
tree | 732c3aa6f3b27f7bd088658a62d4c1fa54bc2b51 | |
parent | a3b7cf0f12da448664536f8b7c793e73da0a4c7f (diff) |
Remove last remaining guava dependencies.
ajat.jar reduced in size from 2.3MB down to 135KB.
Test: m ahat-test, with HtmlEscaperTest added.
Change-Id: I9a71ea46d1c953380ae3b07f3503ef16e4b97c8d
-rw-r--r-- | tools/ahat/Android.mk | 4 | ||||
-rw-r--r-- | tools/ahat/src/DocString.java | 7 | ||||
-rw-r--r-- | tools/ahat/src/HtmlEscaper.java | 48 | ||||
-rw-r--r-- | tools/ahat/src/StaticHandler.java | 8 | ||||
-rw-r--r-- | tools/ahat/test/HtmlEscaperTest.java | 32 | ||||
-rw-r--r-- | tools/ahat/test/Tests.java | 1 |
6 files changed, 91 insertions, 9 deletions
diff --git a/tools/ahat/Android.mk b/tools/ahat/Android.mk index ad6011d43a..f628fe5e11 100644 --- a/tools/ahat/Android.mk +++ b/tools/ahat/Android.mk @@ -22,9 +22,7 @@ include art/build/Android.common_path.mk include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_JAR_MANIFEST := src/manifest.txt -LOCAL_JAVA_RESOURCE_FILES := \ - $(LOCAL_PATH)/src/style.css -LOCAL_STATIC_JAVA_LIBRARIES := guavalib +LOCAL_JAVA_RESOURCE_FILES := $(LOCAL_PATH)/src/style.css LOCAL_IS_HOST_MODULE := true LOCAL_MODULE_TAGS := optional LOCAL_MODULE := ahat diff --git a/tools/ahat/src/DocString.java b/tools/ahat/src/DocString.java index 7970bf8de4..76e9e80d46 100644 --- a/tools/ahat/src/DocString.java +++ b/tools/ahat/src/DocString.java @@ -16,7 +16,6 @@ package com.android.ahat; -import com.google.common.html.HtmlEscapers; import java.net.URI; import java.net.URISyntaxException; @@ -67,7 +66,7 @@ class DocString { * Returns this object. */ public DocString append(String text) { - mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(text)); + mStringBuilder.append(HtmlEscaper.escape(text)); return this; } @@ -185,7 +184,7 @@ class DocString { public DocString appendImage(URI uri, String alt) { mStringBuilder.append("<img alt=\""); - mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(alt)); + mStringBuilder.append(HtmlEscaper.escape(alt)); mStringBuilder.append("\" src=\""); mStringBuilder.append(uri.toASCIIString()); mStringBuilder.append("\" />"); @@ -194,7 +193,7 @@ class DocString { public DocString appendThumbnail(URI uri, String alt) { mStringBuilder.append("<img height=\"16\" alt=\""); - mStringBuilder.append(HtmlEscapers.htmlEscaper().escape(alt)); + mStringBuilder.append(HtmlEscaper.escape(alt)); mStringBuilder.append("\" src=\""); mStringBuilder.append(uri.toASCIIString()); mStringBuilder.append("\" />"); diff --git a/tools/ahat/src/HtmlEscaper.java b/tools/ahat/src/HtmlEscaper.java new file mode 100644 index 0000000000..75a68277d3 --- /dev/null +++ b/tools/ahat/src/HtmlEscaper.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2017 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; + +public class HtmlEscaper { + /** + * Escape html characters in the input string. + */ + public static String escape(String text) { + String specials = "&<>\'\""; + String[] replacements = new String[]{"&", "<", ">", "'", """}; + StringBuilder sb = null; + int low = 0; + for (int i = 0; i < text.length(); ++i) { + int s = specials.indexOf(text.charAt(i)); + if (s != -1) { + if (sb == null) { + sb = new StringBuilder(); + } + sb.append(text.substring(low, i)); + sb.append(replacements[s]); + low = i + 1; + } + } + if (sb == null) { + return text; + } + + sb.append(text.substring(low)); + return sb.toString(); + } +} + + diff --git a/tools/ahat/src/StaticHandler.java b/tools/ahat/src/StaticHandler.java index b2805d624d..4a68f1c12f 100644 --- a/tools/ahat/src/StaticHandler.java +++ b/tools/ahat/src/StaticHandler.java @@ -16,7 +16,6 @@ package com.android.ahat; -import com.google.common.io.ByteStreams; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import java.io.IOException; @@ -49,7 +48,12 @@ class StaticHandler implements HttpHandler { exchange.getResponseHeaders().add("Content-Type", mContentType); exchange.sendResponseHeaders(200, 0); OutputStream os = exchange.getResponseBody(); - ByteStreams.copy(is, os); + int read; + byte[] buf = new byte[4096]; + while ((read = is.read(buf)) >= 0) { + os.write(buf, 0, read); + } + is.close(); os.close(); } } diff --git a/tools/ahat/test/HtmlEscaperTest.java b/tools/ahat/test/HtmlEscaperTest.java new file mode 100644 index 0000000000..a36db356f5 --- /dev/null +++ b/tools/ahat/test/HtmlEscaperTest.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2017 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 org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class HtmlEscaperTest { + @Test + public void tests() { + assertEquals("nothing to escape", HtmlEscaper.escape("nothing to escape")); + assertEquals("a<b> & "c'd"e", HtmlEscaper.escape("a<b> & \"c\'d\"e")); + assertEquals("adjacent <<>> x", HtmlEscaper.escape("adjacent <<>> x")); + assertEquals("< initial", HtmlEscaper.escape("< initial")); + assertEquals("ending >", HtmlEscaper.escape("ending >")); + } +} diff --git a/tools/ahat/test/Tests.java b/tools/ahat/test/Tests.java index 61d0035591..0e7043291d 100644 --- a/tools/ahat/test/Tests.java +++ b/tools/ahat/test/Tests.java @@ -25,6 +25,7 @@ public class Tests { "com.android.ahat.DiffFieldsTest", "com.android.ahat.DiffTest", "com.android.ahat.DominatorsTest", + "com.android.ahat.HtmlEscaperTest", "com.android.ahat.InstanceTest", "com.android.ahat.NativeAllocationTest", "com.android.ahat.ObjectHandlerTest", |