diff options
| -rw-r--r-- | core/java/android/webkit/BrowserFrame.java | 12 | ||||
| -rw-r--r-- | core/java/android/webkit/ClientCertRequestHandler.java | 35 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewCore.java | 4 |
3 files changed, 38 insertions, 13 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index c1945599d337..a2ae69b89486 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 3a71e7e5bc33..f86261305559 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 d13600438e9b..2d15afb5ba46 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -2872,6 +2872,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); } |