Merge "Do Not Merge. Move ssl callbacks to webcore thread." into ics-mr1

This commit is contained in:
Selim Gurun
2012-01-11 14:18:14 -08:00
committed by Android (Google) Code Review
3 changed files with 38 additions and 13 deletions

View File

@@ -1187,11 +1187,19 @@ class BrowserFrame extends Handler {
@Override @Override
public void proceed() { public void proceed() {
SslCertLookupTable.getInstance().setIsAllowed(sslError); SslCertLookupTable.getInstance().setIsAllowed(sslError);
nativeSslCertErrorProceed(handle); post(new Runnable() {
public void run() {
nativeSslCertErrorProceed(handle);
}
});
} }
@Override @Override
public void cancel() { public void cancel() {
nativeSslCertErrorCancel(handle, certError); post(new Runnable() {
public void run() {
nativeSslCertErrorCancel(handle, certError);
}
});
} }
}; };
mCallbackProxy.onReceivedSslError(handler, sslError); mCallbackProxy.onReceivedSslError(handler, sslError);

View File

@@ -16,6 +16,7 @@
package android.webkit; package android.webkit;
import android.os.Handler;
import java.security.PrivateKey; import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
@@ -29,7 +30,7 @@ import org.apache.harmony.xnet.provider.jsse.NativeCrypto;
* *
* @hide * @hide
*/ */
public final class ClientCertRequestHandler { public final class ClientCertRequestHandler extends Handler {
private final BrowserFrame mBrowserFrame; private final BrowserFrame mBrowserFrame;
private final int mHandle; private final int mHandle;
@@ -49,23 +50,35 @@ public final class ClientCertRequestHandler {
* Proceed with the specified private key and client certificate chain. * Proceed with the specified private key and client certificate chain.
*/ */
public void proceed(PrivateKey privateKey, X509Certificate[] chain) { public void proceed(PrivateKey privateKey, X509Certificate[] chain) {
byte[] privateKeyBytes = privateKey.getEncoded(); final byte[] privateKeyBytes = privateKey.getEncoded();
byte[][] chainBytes; final byte[][] chainBytes;
try { try {
chainBytes = NativeCrypto.encodeCertificates(chain); chainBytes = NativeCrypto.encodeCertificates(chain);
mTable.Allow(mHostAndPort, privateKeyBytes, chainBytes);
post(new Runnable() {
public void run() {
mBrowserFrame.nativeSslClientCert(mHandle, privateKeyBytes, chainBytes);
}
});
} catch (CertificateEncodingException e) { } catch (CertificateEncodingException e) {
mBrowserFrame.nativeSslClientCert(mHandle, null, null); post(new Runnable() {
return; 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. * Igore the request for now, the user may be prompted again.
*/ */
public void ignore() { 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() { public void cancel() {
mTable.Deny(mHostAndPort); mTable.Deny(mHostAndPort);
mBrowserFrame.nativeSslClientCert(mHandle, null, null); post(new Runnable() {
public void run() {
mBrowserFrame.nativeSslClientCert(mHandle, null, null);
}
});
} }
} }

View File

@@ -2872,6 +2872,6 @@ public final class WebViewCore {
private native ArrayList<Rect> nativeGetTouchHighlightRects(int x, int y, private native ArrayList<Rect> nativeGetTouchHighlightRects(int x, int y,
int slop); int slop);
private native void nativeAutoFillForm(int queryId); private native void nativeAutoFillForm(int queryId);
private native void nativeScrollLayer(int layer, Rect rect); private native void nativeScrollLayer(int layer, Rect rect);
} }