summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steve Block <steveblock@google.com> 2011-10-05 14:56:21 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-10-05 14:56:21 -0700
commitcfb753a641781425b6ef04a503271108fbce8bd0 (patch)
tree9ebedcc32083e63abb0129b9eacd4aa59855cc5b
parent63d8b0c8b509fb744c034c67027380959279cdc4 (diff)
parentf219f23aec8ef65cca70cd038cb9b77212cf9435 (diff)
Merge "Fix SslCertLookupTable to correctly determine whether we have a valid cached decision"
-rw-r--r--core/java/android/webkit/SslCertLookupTable.java35
1 files changed, 16 insertions, 19 deletions
diff --git a/core/java/android/webkit/SslCertLookupTable.java b/core/java/android/webkit/SslCertLookupTable.java
index a06836cfaa68..98ace4f5d64e 100644
--- a/core/java/android/webkit/SslCertLookupTable.java
+++ b/core/java/android/webkit/SslCertLookupTable.java
@@ -30,6 +30,7 @@ import java.net.URL;
*/
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;
public static SslCertLookupTable getInstance() {
@@ -44,32 +45,28 @@ final class SslCertLookupTable {
}
public void setIsAllowed(SslError sslError) {
- // TODO: We should key on just the host. See http://b/5409251.
- String errorString = sslErrorToString(sslError);
- if (errorString != null) {
- table.putBoolean(errorString, true);
+ 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) {
- // TODO: We should key on just the host. See http://b/5409251.
- String errorString = sslErrorToString(sslError);
- return errorString == null ? false : table.getBoolean(errorString);
- }
-
- public void clear() {
- table.clear();
- }
-
- private static String sslErrorToString(SslError error) {
String host;
try {
- host = new URL(error.getUrl()).getHost();
+ host = new URL(sslError.getUrl()).getHost();
} catch(MalformedURLException e) {
- return null;
+ return false;
}
- return "primary error: " + error.getPrimaryError() +
- " certificate: " + error.getCertificate() +
- " on host: " + host;
+ return table.containsKey(host) && sslError.getPrimaryError() <= table.getInt(host);
+ }
+
+ public void clear() {
+ table.clear();
}
}