diff options
| author | George Mount <mount@google.com> | 2011-10-03 10:56:28 -0700 |
|---|---|---|
| committer | George Mount <mount@google.com> | 2011-10-03 14:40:52 -0700 |
| commit | 1fa26cbfc883ef76a46234d104906a1a9a515fc5 (patch) | |
| tree | f778615f91db8cda09bee1a5562da358ea7efbab /core/java/android/webkit | |
| parent | 8ebf1efd66516340bedbf0d0a19d5e96cc28fa20 (diff) | |
Fix monkey NullPointerException
bug: 5385775
Check mWebViewCore has been destroyed
Remove mWebTextView from WebView when WebView is destroyed
Clear WebTextView's handler when it is removed from WebView
Change-Id: I9c62292d693109e692c341e3e4dba3e04af81fe4
Diffstat (limited to 'core/java/android/webkit')
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 6 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index 217ad7c4367e..18eb1edddd7c 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -768,9 +768,13 @@ import junit.framework.Assert; imm.hideSoftInputFromWindow(getWindowToken(), 0); } mInsideRemove = true; + boolean isFocused = hasFocus(); mWebView.removeView(this); - mWebView.requestFocus(); + if (isFocused) { + mWebView.requestFocus(); + } mInsideRemove = false; + mHandler.removeCallbacksAndMessages(null); } @Override diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 370cce40b704..a38d521d590f 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -1581,6 +1581,11 @@ public class WebView extends AbsoluteLayout mListBoxDialog.dismiss(); mListBoxDialog = null; } + // remove so that it doesn't cause events + if (mWebTextView != null) { + mWebTextView.remove(); + mWebTextView = null; + } if (mNativeClass != 0) nativeStopGL(); if (mWebViewCore != null) { // Set the handlers to null before destroying WebViewCore so no @@ -7636,6 +7641,10 @@ public class WebView extends AbsoluteLayout } /* package */ void passToJavaScript(String currentText, KeyEvent event) { + // check if mWebViewCore has been destroyed + if (mWebViewCore == null) { + return; + } WebViewCore.JSKeyData arg = new WebViewCore.JSKeyData(); arg.mEvent = event; arg.mCurrentText = currentText; |
