diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2010-08-30 15:03:06 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2010-08-30 15:03:06 -0700 |
commit | 1d22e122a6f278a432519673a8ad3e4853934461 (patch) | |
tree | a3294d26020efd95afa0a678f4960dee62e5f99c /core | |
parent | 55a2df8c773f2b0af02d0a47fa5be4f14fcbf419 (diff) | |
parent | 35e719794b9055a79a997f8a506cef9243240e6c (diff) | |
download | frameworks_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.java | 6 | ||||
-rw-r--r-- | core/java/android/webkit/CallbackProxy.java | 12 |
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() { |