summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2010-08-30 15:03:06 -0700
committerAndroid Code Review <code-review@android.com>2010-08-30 15:03:06 -0700
commit1d22e122a6f278a432519673a8ad3e4853934461 (patch)
treea3294d26020efd95afa0a678f4960dee62e5f99c /core
parent55a2df8c773f2b0af02d0a47fa5be4f14fcbf419 (diff)
parent35e719794b9055a79a997f8a506cef9243240e6c (diff)
downloadframeworks_base-1d22e122a6f278a432519673a8ad3e4853934461.zip
frameworks_base-1d22e122a6f278a432519673a8ad3e4853934461.tar.gz
frameworks_base-1d22e122a6f278a432519673a8ad3e4853934461.tar.bz2
Merge "Fix a monkey crash when the new WebView is destroyed."
Diffstat (limited to 'core')
-rw-r--r--core/java/android/webkit/BrowserFrame.java6
-rw-r--r--core/java/android/webkit/CallbackProxy.java12
2 files changed, 10 insertions, 8 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 219a469..a2c80f2 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -785,11 +785,7 @@ class BrowserFrame extends Handler {
* @return The BrowserFrame object stored in the new WebView.
*/
private BrowserFrame createWindow(boolean dialog, boolean userGesture) {
- WebView w = mCallbackProxy.createWindow(dialog, userGesture);
- if (w != null) {
- return w.getWebViewCore().getBrowserFrame();
- }
- return null;
+ return mCallbackProxy.createWindow(dialog, userGesture);
}
/**
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java
index 0e0e032..d65c106 100644
--- a/core/java/android/webkit/CallbackProxy.java
+++ b/core/java/android/webkit/CallbackProxy.java
@@ -1098,7 +1098,7 @@ class CallbackProxy extends Handler {
}
}
- public WebView createWindow(boolean dialog, boolean userGesture) {
+ public BrowserFrame createWindow(boolean dialog, boolean userGesture) {
// Do an unsynchronized quick check to avoid posting if no callback has
// been set.
if (mWebChromeClient == null) {
@@ -1122,9 +1122,15 @@ class CallbackProxy extends Handler {
WebView w = transport.getWebView();
if (w != null) {
- w.getWebViewCore().initializeSubwindow();
+ WebViewCore core = w.getWebViewCore();
+ // If WebView.destroy() has been called, core may be null. Skip
+ // initialization in that case and return null.
+ if (core != null) {
+ core.initializeSubwindow();
+ return core.getBrowserFrame();
+ }
}
- return w;
+ return null;
}
public void onRequestFocus() {