summaryrefslogtreecommitdiff
path: root/core/java/android/webkit
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2012-04-23 05:52:05 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-23 05:52:05 -0700
commit1579a67ee9a53740a09e606e071fd571ee627449 (patch)
tree79337174f1674c757a63220930b587a188632ff2 /core/java/android/webkit
parent47bc84760abb900d13e2e7a7b75edabc70b0054f (diff)
parentcba778dc21ed13711ec020c12a64836bce3c2742 (diff)
Merge "Pause the WebCore thread watchdog at the right time."
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r--core/java/android/webkit/CallbackProxy.java108
1 files changed, 22 insertions, 86 deletions
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java
index ab798e8db6bc..2d9f60dbc89f 100644
--- a/core/java/android/webkit/CallbackProxy.java
+++ b/core/java/android/webkit/CallbackProxy.java
@@ -1047,15 +1047,7 @@ class CallbackProxy extends Handler {
Message msg = obtainMessage(OVERRIDE_URL);
msg.getData().putString("url", url);
msg.obj = res;
- synchronized (this) {
- sendMessage(msg);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for overrideUrl");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(msg);
return res.getResult().booleanValue();
}
@@ -1223,16 +1215,7 @@ class CallbackProxy extends Handler {
bundle.putString("host", schemePlusHost);
bundle.putString("username", username);
bundle.putString("password", password);
- synchronized (this) {
- sendMessage(msg);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG,
- "Caught exception while waiting for onSavePassword");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(msg);
// Doesn't matter here
return false;
}
@@ -1281,18 +1264,8 @@ class CallbackProxy extends Handler {
mWebView.getWebView().new WebViewTransport();
final Message msg = obtainMessage(NOTIFY);
msg.obj = transport;
- synchronized (this) {
- sendMessage(obtainMessage(CREATE_WINDOW, dialog ? 1 : 0,
- userGesture ? 1 : 0, msg));
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG,
- "Caught exception while waiting for createWindow");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
-
+ sendMessageToUiThreadSync(obtainMessage(CREATE_WINDOW, dialog ? 1 : 0,
+ userGesture ? 1 : 0, msg));
WebViewClassic w = WebViewClassic.fromWebView(transport.getWebView());
if (w != null) {
WebViewCore core = w.getWebViewCore();
@@ -1375,15 +1348,7 @@ class CallbackProxy extends Handler {
Message alert = obtainMessage(JS_ALERT, result);
alert.getData().putString("message", message);
alert.getData().putString("url", url);
- synchronized (this) {
- sendMessage(alert);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for jsAlert");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(alert);
}
public boolean onJsConfirm(String url, String message) {
@@ -1396,15 +1361,7 @@ class CallbackProxy extends Handler {
Message confirm = obtainMessage(JS_CONFIRM, result);
confirm.getData().putString("message", message);
confirm.getData().putString("url", url);
- synchronized (this) {
- sendMessage(confirm);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for jsConfirm");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(confirm);
return result.mJsResult.getResult();
}
@@ -1419,15 +1376,7 @@ class CallbackProxy extends Handler {
prompt.getData().putString("message", message);
prompt.getData().putString("default", defaultValue);
prompt.getData().putString("url", url);
- synchronized (this) {
- sendMessage(prompt);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for jsPrompt");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(prompt);
return result.mJsResult.getStringResult();
}
@@ -1441,15 +1390,7 @@ class CallbackProxy extends Handler {
Message confirm = obtainMessage(JS_UNLOAD, result);
confirm.getData().putString("message", message);
confirm.getData().putString("url", url);
- synchronized (this) {
- sendMessage(confirm);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for jsUnload");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(confirm);
return result.mJsResult.getResult();
}
@@ -1586,15 +1527,7 @@ class CallbackProxy extends Handler {
}
JsResultReceiver result = new JsResultReceiver();
Message timeout = obtainMessage(JS_TIMEOUT, result);
- synchronized (this) {
- sendMessage(timeout);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG, "Caught exception while waiting for jsUnload");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(timeout);
return result.mJsResult.getResult();
}
@@ -1655,16 +1588,7 @@ class CallbackProxy extends Handler {
UploadFile uploadFile = new UploadFile();
UploadFileMessageData data = new UploadFileMessageData(uploadFile, acceptType, capture);
myMessage.obj = data;
- synchronized (this) {
- sendMessage(myMessage);
- try {
- wait();
- } catch (InterruptedException e) {
- Log.e(LOGTAG,
- "Caught exception while waiting for openFileChooser");
- Log.e(LOGTAG, Log.getStackTraceString(e));
- }
- }
+ sendMessageToUiThreadSync(myMessage);
return uploadFile.getResult();
}
@@ -1723,4 +1647,16 @@ class CallbackProxy extends Handler {
sendMessage(msg);
}
+
+ private synchronized void sendMessageToUiThreadSync(Message msg) {
+ sendMessage(msg);
+ WebCoreThreadWatchdog.pause();
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ Log.e(LOGTAG, "Caught exception waiting for synchronous UI message to be processed");
+ Log.e(LOGTAG, Log.getStackTraceString(e));
+ }
+ WebCoreThreadWatchdog.resume();
+ }
}