summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/BrowserFrame.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/webkit/BrowserFrame.java')
-rw-r--r--core/java/android/webkit/BrowserFrame.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index ec3c329..b7ffd14 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -88,6 +88,9 @@ class BrowserFrame extends Handler {
// Attached Javascript interfaces
private Map<String, Object> mJSInterfaceMap;
+ // Key store handler when Chromium HTTP stack is used.
+ private KeyStoreHandler mKeyStoreHandler = null;
+
// message ids
// a message posted when a frame loading is completed
static final int FRAME_COMPLETED = 1001;
@@ -1173,8 +1176,27 @@ class BrowserFrame extends Handler {
}
mimeType = MimeTypeMap.getSingleton().remapGenericMimeType(
mimeType, url, contentDisposition);
- mCallbackProxy.onDownloadStart(url, userAgent,
+
+ if (CertTool.getCertType(mimeType) != null) {
+ mKeyStoreHandler = new KeyStoreHandler(mimeType);
+ } else {
+ mCallbackProxy.onDownloadStart(url, userAgent,
contentDisposition, mimeType, contentLength);
+ }
+ }
+
+ /**
+ * Called by JNI for Chrome HTTP stack when the Java side needs to access the data.
+ */
+ private void didReceiveData(byte data[], int size) {
+ if (mKeyStoreHandler != null) mKeyStoreHandler.didReceiveData(data, size);
+ }
+
+ private void didFinishLoading() {
+ if (mKeyStoreHandler != null) {
+ mKeyStoreHandler.installCert(mContext);
+ mKeyStoreHandler = null;
+ }
}
/**