diff options
author | Kristian Monsen <kristianm@google.com> | 2013-08-13 11:43:33 -0700 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2013-08-13 13:36:35 -0700 |
commit | 384082f8b157276c85b658d8dc254e3489f8f944 (patch) | |
tree | ced92fed39f450d93c78353249440d2e5cddfefb /chromium/java/com/android/webview | |
parent | 0ee6d7260f3280f620f5d7943e9def20147ade0c (diff) | |
download | webview-384082f8b157276c85b658d8dc254e3489f8f944.tar.gz |
Fix for bug 10154699, debug popups
Classic WebView had a state with a null webchromeclient, and did
not show alerts when that was the case.
Change-Id: I7f48dca440f1f6e61ad19c43e9e9d9769d30b581
Diffstat (limited to 'chromium/java/com/android/webview')
-rw-r--r-- | chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java | 126 |
1 files changed, 87 insertions, 39 deletions
diff --git a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java index 1f6bed8..75dffca 100644 --- a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java +++ b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java @@ -78,7 +78,7 @@ public class WebViewContentsClientAdapter extends AwContentsClient { private final WebView mWebView; // The WebViewClient instance that was passed to WebView.setWebViewClient(). private WebViewClient mWebViewClient; - // The WebViewClient instance that was passed to WebView.setContentViewClient(). + // The WebChromeClient instance that was passed to WebView.setContentViewClient(). private WebChromeClient mWebChromeClient; // The listener receiving find-in-page API results. private WebView.FindListener mFindListener; @@ -103,7 +103,6 @@ public class WebViewContentsClientAdapter extends AwContentsClient { mWebView = webView; setWebViewClient(null); - setWebChromeClient(null); mUiThreadHandler = new Handler() { @@ -202,12 +201,7 @@ public class WebViewContentsClientAdapter extends AwContentsClient { } void setWebChromeClient(WebChromeClient client) { - if (client != null) { - mWebChromeClient = client; - } else { - // WebViewClassic doesn't implement any special behavior for a null WebChromeClient. - mWebChromeClient = new WebChromeClient(); - } + mWebChromeClient = client; } void setDownloadListener(DownloadListener listener) { @@ -232,7 +226,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void getVisitedHistory(ValueCallback<String[]> callback) { TraceEvent.begin(); - mWebChromeClient.getVisitedHistory(callback); + if (mWebChromeClient != null) { + mWebChromeClient.getVisitedHistory(callback); + } TraceEvent.end(); } @@ -252,7 +248,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onProgressChanged(int progress) { TraceEvent.begin(); - mWebChromeClient.onProgressChanged(mWebView, progress); + if (mWebChromeClient != null) { + mWebChromeClient.onProgressChanged(mWebView, progress); + } TraceEvent.end(); } @@ -298,7 +296,12 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { TraceEvent.begin(); - boolean result = mWebChromeClient.onConsoleMessage(consoleMessage); + boolean result; + if (mWebChromeClient != null) { + result = mWebChromeClient.onConsoleMessage(consoleMessage); + } else { + result = false; + } TraceEvent.end(); return result; } @@ -338,7 +341,12 @@ public class WebViewContentsClientAdapter extends AwContentsClient { Message m = mUiThreadHandler.obtainMessage( NEW_WEBVIEW_CREATED, mWebView.new WebViewTransport()); TraceEvent.begin(); - boolean result = mWebChromeClient.onCreateWindow(mWebView, isDialog, isUserGesture, m); + boolean result; + if (mWebChromeClient != null) { + result = mWebChromeClient.onCreateWindow(mWebView, isDialog, isUserGesture, m); + } else { + result = false; + } TraceEvent.end(); return result; } @@ -349,7 +357,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onCloseWindow() { TraceEvent.begin(); - mWebChromeClient.onCloseWindow(mWebView); + if (mWebChromeClient != null) { + mWebChromeClient.onCloseWindow(mWebView); + } TraceEvent.end(); } @@ -359,7 +369,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onRequestFocus() { TraceEvent.begin(); - mWebChromeClient.onRequestFocus(mWebView); + if (mWebChromeClient != null) { + mWebChromeClient.onRequestFocus(mWebView); + } TraceEvent.end(); } @@ -369,7 +381,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onReceivedTouchIconUrl(String url, boolean precomposed) { TraceEvent.begin(); - mWebChromeClient.onReceivedTouchIconUrl(mWebView, url, precomposed); + if (mWebChromeClient != null) { + mWebChromeClient.onReceivedTouchIconUrl(mWebView, url, precomposed); + } TraceEvent.end(); } @@ -379,7 +393,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onReceivedIcon(Bitmap bitmap) { TraceEvent.begin(); - mWebChromeClient.onReceivedIcon(mWebView, bitmap); + if (mWebChromeClient != null) { + mWebChromeClient.onReceivedIcon(mWebView, bitmap); + } TraceEvent.end(); } @@ -450,7 +466,9 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onReceivedTitle(String title) { TraceEvent.begin(); - mWebChromeClient.onReceivedTitle(mWebView, title); + if (mWebChromeClient != null) { + mWebChromeClient.onReceivedTitle(mWebView, title); + } TraceEvent.end(); } @@ -488,14 +506,18 @@ public class WebViewContentsClientAdapter extends AwContentsClient { public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { TraceEvent.begin(); - mWebChromeClient.onGeolocationPermissionsShowPrompt(origin, callback); + if (mWebChromeClient != null) { + mWebChromeClient.onGeolocationPermissionsShowPrompt(origin, callback); + } TraceEvent.end(); } @Override public void onGeolocationPermissionsHidePrompt() { TraceEvent.begin(); - mWebChromeClient.onGeolocationPermissionsHidePrompt(); + if (mWebChromeClient != null) { + mWebChromeClient.onGeolocationPermissionsHidePrompt(); + } TraceEvent.end(); } @@ -539,10 +561,13 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void handleJsAlert(String url, String message, JsResultReceiver receiver) { TraceEvent.begin(); - final JsPromptResult res = new JsPromptResultReceiverAdapter(receiver).getPromptResult(); - if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) { - new JsDialogHelper(res, JsDialogHelper.ALERT, null, message, url) - .showDialog(mWebView.getContext()); + if (mWebChromeClient != null) { + final JsPromptResult res = + new JsPromptResultReceiverAdapter(receiver).getPromptResult(); + if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) { + new JsDialogHelper(res, JsDialogHelper.ALERT, null, message, url) + .showDialog(mWebView.getContext()); + } } TraceEvent.end(); } @@ -550,10 +575,13 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void handleJsBeforeUnload(String url, String message, JsResultReceiver receiver) { TraceEvent.begin(); - final JsPromptResult res = new JsPromptResultReceiverAdapter(receiver).getPromptResult(); - if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, res)) { - new JsDialogHelper(res, JsDialogHelper.UNLOAD, null, message, url) - .showDialog(mWebView.getContext()); + if (mWebChromeClient != null) { + final JsPromptResult res = + new JsPromptResultReceiverAdapter(receiver).getPromptResult(); + if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, res)) { + new JsDialogHelper(res, JsDialogHelper.UNLOAD, null, message, url) + .showDialog(mWebView.getContext()); + } } TraceEvent.end(); } @@ -561,10 +589,13 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void handleJsConfirm(String url, String message, JsResultReceiver receiver) { TraceEvent.begin(); - final JsPromptResult res = new JsPromptResultReceiverAdapter(receiver).getPromptResult(); - if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) { - new JsDialogHelper(res, JsDialogHelper.CONFIRM, null, message, url) - .showDialog(mWebView.getContext()); + if (mWebChromeClient != null) { + final JsPromptResult res = + new JsPromptResultReceiverAdapter(receiver).getPromptResult(); + if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) { + new JsDialogHelper(res, JsDialogHelper.CONFIRM, null, message, url) + .showDialog(mWebView.getContext()); + } } TraceEvent.end(); } @@ -573,10 +604,13 @@ public class WebViewContentsClientAdapter extends AwContentsClient { public void handleJsPrompt(String url, String message, String defaultValue, JsPromptResultReceiver receiver) { TraceEvent.begin(); - final JsPromptResult res = new JsPromptResultReceiverAdapter(receiver).getPromptResult(); - if (!mWebChromeClient.onJsPrompt(mWebView, url, message, defaultValue, res)) { - new JsDialogHelper(res, JsDialogHelper.PROMPT, defaultValue, message, url) - .showDialog(mWebView.getContext()); + if (mWebChromeClient != null) { + final JsPromptResult res = + new JsPromptResultReceiverAdapter(receiver).getPromptResult(); + if (!mWebChromeClient.onJsPrompt(mWebView, url, message, defaultValue, res)) { + new JsDialogHelper(res, JsDialogHelper.PROMPT, defaultValue, message, url) + .showDialog(mWebView.getContext()); + } } TraceEvent.end(); } @@ -655,21 +689,30 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public void onShowCustomView(View view, CustomViewCallback cb) { TraceEvent.begin(); - mWebChromeClient.onShowCustomView(view, cb); + if (mWebChromeClient != null) { + mWebChromeClient.onShowCustomView(view, cb); + } TraceEvent.end(); } @Override public void onHideCustomView() { TraceEvent.begin(); - mWebChromeClient.onHideCustomView(); + if (mWebChromeClient != null) { + mWebChromeClient.onHideCustomView(); + } TraceEvent.end(); } @Override protected View getVideoLoadingProgressView() { TraceEvent.begin(); - View result = mWebChromeClient.getVideoLoadingProgressView(); + View result; + if (mWebChromeClient != null) { + result = mWebChromeClient.getVideoLoadingProgressView(); + } else { + result = null; + } TraceEvent.end(); return result; } @@ -677,7 +720,12 @@ public class WebViewContentsClientAdapter extends AwContentsClient { @Override public Bitmap getDefaultVideoPoster() { TraceEvent.begin(); - Bitmap result = mWebChromeClient.getDefaultVideoPoster(); + Bitmap result; + if (mWebChromeClient != null) { + result = mWebChromeClient.getDefaultVideoPoster(); + } else { + result = null; + } TraceEvent.end(); return result; } |