summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorSelim Gurun <sgurun@google.com>2011-12-07 18:39:24 -0800
committerSelim Gurun <sgurun@google.com>2011-12-13 10:08:27 -0800
commit38f3610a29c75c3bb16408a911e3365a71b6524c (patch)
tree3758c8c7aef8cc1ce90eb2e03770f5f2ae2ea2cd /core/java/android
parent9c8fc9c62015382a9369f983a7ac6c655d9bbaaf (diff)
downloadframeworks_base-38f3610a29c75c3bb16408a911e3365a71b6524c.zip
frameworks_base-38f3610a29c75c3bb16408a911e3365a71b6524c.tar.gz
frameworks_base-38f3610a29c75c3bb16408a911e3365a71b6524c.tar.bz2
Move ssl callbacks to webcore thread.
Bug: 4586251 Original CL was for ics-mr1. We decided it should be in master instead. Original CL https://android-git.corp.google.com/g/154083 Current ssl cert logic makes callbacks to webkit from the UI thread. This is not right. Move the callbacks to proper thread. Change-Id: Ie3de7dbaed7780dbb6cf537ca1d29686d867b784
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/webkit/BrowserFrame.java12
-rw-r--r--core/java/android/webkit/ClientCertRequestHandler.java35
-rw-r--r--core/java/android/webkit/WebViewCore.java4
3 files changed, 38 insertions, 13 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index c194559..a2ae69b 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -1180,11 +1180,19 @@ class BrowserFrame extends Handler {
@Override
public void proceed() {
SslCertLookupTable.getInstance().setIsAllowed(sslError);
- nativeSslCertErrorProceed(handle);
+ post(new Runnable() {
+ public void run() {
+ nativeSslCertErrorProceed(handle);
+ }
+ });
}
@Override
public void cancel() {
- nativeSslCertErrorCancel(handle, certError);
+ post(new Runnable() {
+ public void run() {
+ nativeSslCertErrorCancel(handle, certError);
+ }
+ });
}
};
mCallbackProxy.onReceivedSslError(handler, sslError);
diff --git a/core/java/android/webkit/ClientCertRequestHandler.java b/core/java/android/webkit/ClientCertRequestHandler.java
index 3a71e7e..f862613 100644
--- a/core/java/android/webkit/ClientCertRequestHandler.java
+++ b/core/java/android/webkit/ClientCertRequestHandler.java
@@ -16,6 +16,7 @@
package android.webkit;
+import android.os.Handler;
import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
@@ -29,7 +30,7 @@ import org.apache.harmony.xnet.provider.jsse.NativeCrypto;
*
* @hide
*/
-public final class ClientCertRequestHandler {
+public final class ClientCertRequestHandler extends Handler {
private final BrowserFrame mBrowserFrame;
private final int mHandle;
@@ -49,23 +50,35 @@ public final class ClientCertRequestHandler {
* Proceed with the specified private key and client certificate chain.
*/
public void proceed(PrivateKey privateKey, X509Certificate[] chain) {
- byte[] privateKeyBytes = privateKey.getEncoded();
- byte[][] chainBytes;
+ final byte[] privateKeyBytes = privateKey.getEncoded();
+ final byte[][] chainBytes;
try {
chainBytes = NativeCrypto.encodeCertificates(chain);
+ mTable.Allow(mHostAndPort, privateKeyBytes, chainBytes);
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, privateKeyBytes, chainBytes);
+ }
+ });
} catch (CertificateEncodingException e) {
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
- return;
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ return;
+ }
+ });
}
- mTable.Allow(mHostAndPort, privateKeyBytes, chainBytes);
- mBrowserFrame.nativeSslClientCert(mHandle, privateKeyBytes, chainBytes);
}
/**
* Igore the request for now, the user may be prompted again.
*/
public void ignore() {
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ }
+ });
}
/**
@@ -73,6 +86,10 @@ public final class ClientCertRequestHandler {
*/
public void cancel() {
mTable.Deny(mHostAndPort);
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ }
+ });
}
}
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 0f749bc..f4cb0ac 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -2865,6 +2865,6 @@ public final class WebViewCore {
private native ArrayList<Rect> nativeGetTouchHighlightRects(int x, int y,
int slop);
- private native void nativeAutoFillForm(int queryId);
- private native void nativeScrollLayer(int layer, Rect rect);
+ private native void nativeAutoFillForm(int queryId);
+ private native void nativeScrollLayer(int layer, Rect rect);
}