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
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);

View File

@@ -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);
}
});
}
}

View File

@@ -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);
}