Merge "Work around race condition in CallBackProxy."

This commit is contained in:
Ben Murdoch
2010-11-05 10:12:21 +00:00
committed by Android (Google) Code Review

View File

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