Merge "Add WebViewClient.onProceededAfterSslError()"
This commit is contained in:
@@ -471,6 +471,7 @@ class BrowserFrame extends Handler {
|
||||
|
||||
/**
|
||||
* We have received an SSL certificate for the main top-level page.
|
||||
* Used by the Android HTTP stack only.
|
||||
*/
|
||||
void certificate(SslCertificate certificate) {
|
||||
if (mIsMainFrame) {
|
||||
@@ -1178,6 +1179,7 @@ class BrowserFrame extends Handler {
|
||||
|
||||
if (SslCertLookupTable.getInstance().isAllowed(sslError)) {
|
||||
nativeSslCertErrorProceed(handle);
|
||||
mCallbackProxy.onProceededAfterSslError(sslError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1267,7 +1269,8 @@ class BrowserFrame extends Handler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by JNI when we load a page over SSL.
|
||||
* Called by JNI when we recieve a certificate for the page's main resource.
|
||||
* Used by the Chromium HTTP stack only.
|
||||
*/
|
||||
private void setCertificate(byte cert_der[]) {
|
||||
try {
|
||||
|
||||
@@ -77,53 +77,54 @@ class CallbackProxy extends Handler {
|
||||
// Used to call startActivity during url override.
|
||||
private final Context mContext;
|
||||
|
||||
// Message Ids
|
||||
private static final int PAGE_STARTED = 100;
|
||||
private static final int RECEIVED_ICON = 101;
|
||||
private static final int RECEIVED_TITLE = 102;
|
||||
private static final int OVERRIDE_URL = 103;
|
||||
private static final int AUTH_REQUEST = 104;
|
||||
private static final int SSL_ERROR = 105;
|
||||
private static final int PROGRESS = 106;
|
||||
private static final int UPDATE_VISITED = 107;
|
||||
private static final int LOAD_RESOURCE = 108;
|
||||
private static final int CREATE_WINDOW = 109;
|
||||
private static final int CLOSE_WINDOW = 110;
|
||||
private static final int SAVE_PASSWORD = 111;
|
||||
private static final int JS_ALERT = 112;
|
||||
private static final int JS_CONFIRM = 113;
|
||||
private static final int JS_PROMPT = 114;
|
||||
private static final int JS_UNLOAD = 115;
|
||||
private static final int ASYNC_KEYEVENTS = 116;
|
||||
private static final int DOWNLOAD_FILE = 118;
|
||||
private static final int REPORT_ERROR = 119;
|
||||
private static final int RESEND_POST_DATA = 120;
|
||||
private static final int PAGE_FINISHED = 121;
|
||||
private static final int REQUEST_FOCUS = 122;
|
||||
private static final int SCALE_CHANGED = 123;
|
||||
private static final int RECEIVED_CERTIFICATE = 124;
|
||||
private static final int SWITCH_OUT_HISTORY = 125;
|
||||
private static final int EXCEEDED_DATABASE_QUOTA = 126;
|
||||
private static final int REACHED_APPCACHE_MAXSIZE = 127;
|
||||
private static final int JS_TIMEOUT = 128;
|
||||
private static final int ADD_MESSAGE_TO_CONSOLE = 129;
|
||||
private static final int GEOLOCATION_PERMISSIONS_SHOW_PROMPT = 130;
|
||||
private static final int GEOLOCATION_PERMISSIONS_HIDE_PROMPT = 131;
|
||||
private static final int RECEIVED_TOUCH_ICON_URL = 132;
|
||||
private static final int GET_VISITED_HISTORY = 133;
|
||||
private static final int OPEN_FILE_CHOOSER = 134;
|
||||
private static final int ADD_HISTORY_ITEM = 135;
|
||||
private static final int HISTORY_INDEX_CHANGED = 136;
|
||||
private static final int AUTH_CREDENTIALS = 137;
|
||||
private static final int SET_INSTALLABLE_WEBAPP = 138;
|
||||
private static final int NOTIFY_SEARCHBOX_LISTENERS = 139;
|
||||
private static final int AUTO_LOGIN = 140;
|
||||
private static final int CLIENT_CERT_REQUEST = 141;
|
||||
private static final int SEARCHBOX_IS_SUPPORTED_CALLBACK = 142;
|
||||
private static final int SEARCHBOX_DISPATCH_COMPLETE_CALLBACK= 143;
|
||||
// Message IDs
|
||||
private static final int PAGE_STARTED = 100;
|
||||
private static final int RECEIVED_ICON = 101;
|
||||
private static final int RECEIVED_TITLE = 102;
|
||||
private static final int OVERRIDE_URL = 103;
|
||||
private static final int AUTH_REQUEST = 104;
|
||||
private static final int SSL_ERROR = 105;
|
||||
private static final int PROGRESS = 106;
|
||||
private static final int UPDATE_VISITED = 107;
|
||||
private static final int LOAD_RESOURCE = 108;
|
||||
private static final int CREATE_WINDOW = 109;
|
||||
private static final int CLOSE_WINDOW = 110;
|
||||
private static final int SAVE_PASSWORD = 111;
|
||||
private static final int JS_ALERT = 112;
|
||||
private static final int JS_CONFIRM = 113;
|
||||
private static final int JS_PROMPT = 114;
|
||||
private static final int JS_UNLOAD = 115;
|
||||
private static final int ASYNC_KEYEVENTS = 116;
|
||||
private static final int DOWNLOAD_FILE = 118;
|
||||
private static final int REPORT_ERROR = 119;
|
||||
private static final int RESEND_POST_DATA = 120;
|
||||
private static final int PAGE_FINISHED = 121;
|
||||
private static final int REQUEST_FOCUS = 122;
|
||||
private static final int SCALE_CHANGED = 123;
|
||||
private static final int RECEIVED_CERTIFICATE = 124;
|
||||
private static final int SWITCH_OUT_HISTORY = 125;
|
||||
private static final int EXCEEDED_DATABASE_QUOTA = 126;
|
||||
private static final int REACHED_APPCACHE_MAXSIZE = 127;
|
||||
private static final int JS_TIMEOUT = 128;
|
||||
private static final int ADD_MESSAGE_TO_CONSOLE = 129;
|
||||
private static final int GEOLOCATION_PERMISSIONS_SHOW_PROMPT = 130;
|
||||
private static final int GEOLOCATION_PERMISSIONS_HIDE_PROMPT = 131;
|
||||
private static final int RECEIVED_TOUCH_ICON_URL = 132;
|
||||
private static final int GET_VISITED_HISTORY = 133;
|
||||
private static final int OPEN_FILE_CHOOSER = 134;
|
||||
private static final int ADD_HISTORY_ITEM = 135;
|
||||
private static final int HISTORY_INDEX_CHANGED = 136;
|
||||
private static final int AUTH_CREDENTIALS = 137;
|
||||
private static final int SET_INSTALLABLE_WEBAPP = 138;
|
||||
private static final int NOTIFY_SEARCHBOX_LISTENERS = 139;
|
||||
private static final int AUTO_LOGIN = 140;
|
||||
private static final int CLIENT_CERT_REQUEST = 141;
|
||||
private static final int SEARCHBOX_IS_SUPPORTED_CALLBACK = 142;
|
||||
private static final int SEARCHBOX_DISPATCH_COMPLETE_CALLBACK = 143;
|
||||
private static final int PROCEEDED_AFTER_SSL_ERROR = 144;
|
||||
|
||||
// Message triggered by the client to resume execution
|
||||
private static final int NOTIFY = 200;
|
||||
private static final int NOTIFY = 200;
|
||||
|
||||
// Result transportation object for returning results across thread
|
||||
// boundaries.
|
||||
@@ -349,6 +350,13 @@ class CallbackProxy extends Handler {
|
||||
}
|
||||
break;
|
||||
|
||||
case PROCEEDED_AFTER_SSL_ERROR:
|
||||
if (mWebViewClient != null) {
|
||||
mWebViewClient.onProceededAfterSslError(mWebView,
|
||||
(SslError) msg.obj);
|
||||
}
|
||||
break;
|
||||
|
||||
case CLIENT_CERT_REQUEST:
|
||||
if (mWebViewClient != null) {
|
||||
HashMap<String, Object> map =
|
||||
@@ -1024,6 +1032,15 @@ class CallbackProxy extends Handler {
|
||||
sendMessage(msg);
|
||||
}
|
||||
|
||||
public void onProceededAfterSslError(SslError error) {
|
||||
if (mWebViewClient == null) {
|
||||
return;
|
||||
}
|
||||
Message msg = obtainMessage(PROCEEDED_AFTER_SSL_ERROR);
|
||||
msg.obj = error;
|
||||
sendMessage(msg);
|
||||
}
|
||||
|
||||
public void onReceivedClientCertRequest(ClientCertRequestHandler handler, String host_and_port) {
|
||||
// Do an unsynchronized quick check to avoid posting if no callback has
|
||||
// been set.
|
||||
|
||||
@@ -186,11 +186,11 @@ public class WebViewClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify the host application to handle a SSL certificate error request
|
||||
* (display the error to the user and ask whether to proceed or not). The
|
||||
* host application has to call either handler.cancel() or handler.proceed()
|
||||
* as the connection is suspended and waiting for the response. The default
|
||||
* behavior is to cancel the load.
|
||||
* Notify the host application that an SSL error occurred while loading a
|
||||
* resource. The host application must call either handler.cancel() or
|
||||
* handler.proceed(). Note that the decision may be retained for use in
|
||||
* response to future SSL errors. The default behavior is to cancel the
|
||||
* load.
|
||||
*
|
||||
* @param view The WebView that is initiating the callback.
|
||||
* @param handler An SslErrorHandler object that will handle the user's
|
||||
@@ -202,6 +202,15 @@ public class WebViewClient {
|
||||
handler.cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify the host application that an SSL error occurred while loading a
|
||||
* resource, but the WebView but chose to proceed anyway based on a
|
||||
* decision retained from a previous response to onReceivedSslError().
|
||||
* @hide
|
||||
*/
|
||||
public void onProceededAfterSslError(WebView view, SslError error) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify the host application to handle a SSL client certificate
|
||||
* request (display the request to the user and ask whether to
|
||||
|
||||
Reference in New Issue
Block a user