summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/URLUtil.java
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-08-12 09:27:01 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-08-12 09:27:01 -0700
commitf2c9b2c0b4e4e7df17ca0ff03311ea3f23cc2148 (patch)
tree36eb0e481414e6a2f7874eea4dac11732f656b90 /core/java/android/webkit/URLUtil.java
parentc5127603976b27475921ace59168d2b920219a8e (diff)
parent758bf410843724d31f4ab48e8d7dd6b7c1240f23 (diff)
Merge change 20706
* changes: Improve Browser performance by 1-2%. To address domain sanity bug, http://b/issue?id=1022797, we decoded/encoded the url for each request. As the url can be long, getBytes() and String.init are taking 1.5% in nytimes.com and 2.4% in cnn.com. By doing a simple URL encoding test, we can shave 1-2 secs thread time during loading.
Diffstat (limited to 'core/java/android/webkit/URLUtil.java')
-rw-r--r--core/java/android/webkit/URLUtil.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/core/java/android/webkit/URLUtil.java b/core/java/android/webkit/URLUtil.java
index 1d1828999305..5ed42e9ea163 100644
--- a/core/java/android/webkit/URLUtil.java
+++ b/core/java/android/webkit/URLUtil.java
@@ -126,6 +126,32 @@ public final class URLUtil {
return retData;
}
+ /**
+ * @return True iff the url is correctly URL encoded
+ */
+ static boolean verifyURLEncoding(String url) {
+ int count = url.length();
+ if (count == 0) {
+ return false;
+ }
+
+ int index = url.indexOf('%');
+ while (index >= 0 && index < count) {
+ if (index < count - 2) {
+ try {
+ parseHex((byte) url.charAt(++index));
+ parseHex((byte) url.charAt(++index));
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ index = url.indexOf('%', index + 1);
+ }
+ return true;
+ }
+
private static int parseHex(byte b) {
if (b >= '0' && b <= '9') return (b - '0');
if (b >= 'A' && b <= 'F') return (b - 'A' + 10);