diff options
| -rw-r--r-- | core/java/android/webkit/CallbackProxy.java | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java index 8c9f266b6d55..0078e7a90a8f 100644 --- a/core/java/android/webkit/CallbackProxy.java +++ b/core/java/android/webkit/CallbackProxy.java @@ -496,10 +496,7 @@ class CallbackProxy extends Handler { String url = msg.getData().getString("url"); if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) { - // only display the alert dialog if the mContext is - // Activity and its window has the focus. - if (!(mContext instanceof Activity) - || !((Activity) mContext).hasWindowFocus()) { + if (!canShowAlertDialog()) { res.cancel(); res.setReady(); break; @@ -535,10 +532,7 @@ class CallbackProxy extends Handler { String url = msg.getData().getString("url"); if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) { - // only display the alert dialog if the mContext is - // Activity and its window has the focus. - if (!(mContext instanceof Activity) - || !((Activity) mContext).hasWindowFocus()) { + if (!canShowAlertDialog()) { res.cancel(); res.setReady(); break; @@ -583,10 +577,7 @@ class CallbackProxy extends Handler { String url = msg.getData().getString("url"); if (!mWebChromeClient.onJsPrompt(mWebView, url, message, defaultVal, res)) { - // only display the alert dialog if the mContext is - // Activity and its window has the focus. - if (!(mContext instanceof Activity) - || !((Activity) mContext).hasWindowFocus()) { + if (!canShowAlertDialog()) { res.cancel(); res.setReady(); break; @@ -642,10 +633,7 @@ class CallbackProxy extends Handler { String url = msg.getData().getString("url"); if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, res)) { - // only display the alert dialog if the mContext is - // Activity and its window has the focus. - if (!(mContext instanceof Activity) - || !((Activity) mContext).hasWindowFocus()) { + if (!canShowAlertDialog()) { res.cancel(); res.setReady(); break; @@ -1555,4 +1543,14 @@ class CallbackProxy extends Handler { } sendMessage(obtainMessage(SET_INSTALLABLE_WEBAPP)); } + + boolean canShowAlertDialog() { + // We can only display the alert dialog if mContext is + // an Activity context. + // FIXME: Should we display dialogs if mContext does + // not have the window focus (e.g. if the user is viewing + // another Activity when the alert should be displayed? + // See bug 3166409 + return mContext instanceof Activity; + } } |