Index: android_webview/java/src/org/chromium/android_webview/SslCertLookupTable.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/SslCertLookupTable.java b/android_webview/java/src/org/chromium/android_webview/SslCertLookupTable.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e043a42ec02dd25b17ce6f42164b945112b26f86 |
--- /dev/null |
+++ b/android_webview/java/src/org/chromium/android_webview/SslCertLookupTable.java |
@@ -0,0 +1,58 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.android_webview; |
+ |
+import android.os.Bundle; |
+import android.net.http.SslError; |
+ |
+import java.net.MalformedURLException; |
+import java.net.URL; |
+ |
+/** |
+ * Stores the user's decision of whether to allow or deny an invalid certificate. |
+ * This class is not threadsafe. Used on the UI thread. |
+ */ |
+final class SslCertLookupTable { |
+ private static SslCertLookupTable sTable; |
+ // We store the most severe error we're willing to allow for each host. |
+ private final Bundle table; |
boliu
2013/02/01 23:07:13
I don't know much about bundle. Is it better than
sgurun-gerrit only
2013/02/02 01:01:10
I don't know if this is better, but this is from o
|
+ |
+ public static SslCertLookupTable getInstance() { |
+ if (sTable == null) { |
+ sTable = new SslCertLookupTable(); |
+ } |
+ return sTable; |
+ } |
+ |
+ private SslCertLookupTable() { |
+ table = new Bundle(); |
+ } |
+ |
+ public void setIsAllowed(SslError sslError) { |
boliu
2013/02/01 23:07:13
Looks like this is not binary, so something like s
sgurun-gerrit only
2013/02/02 01:01:10
Please clarify, not sure what you mean.
On 2013/0
boliu
2013/02/02 01:10:42
I mean setIsAllowed feels like it should take a bo
sgurun-gerrit only
2013/02/02 03:16:10
Obviously SslError is not int, but I see what you
|
+ String host; |
+ try { |
+ host = new URL(sslError.getUrl()).getHost(); |
+ } catch(MalformedURLException e) { |
+ return; |
+ } |
+ table.putInt(host, sslError.getPrimaryError()); |
+ } |
+ |
+ // We allow the decision to be re-used if it's for the same host and is for |
+ // an error of equal or greater severity than this error. |
+ public boolean isAllowed(SslError sslError) { |
+ String host; |
+ try { |
+ host = new URL(sslError.getUrl()).getHost(); |
+ } catch(MalformedURLException e) { |
+ return false; |
+ } |
+ return table.containsKey(host) && sslError.getPrimaryError() <= table.getInt(host); |
+ } |
+ |
+ public void clear() { |
boliu
2013/02/01 23:07:13
I don't think this is called anywhere.
Should thi
sgurun-gerrit only
2013/02/02 01:01:10
No not called right now. But soon will be used (re
|
+ table.clear(); |
+ } |
+} |