summaryrefslogtreecommitdiff
path: root/core/java/android/webkit
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2011-10-03 10:56:28 -0700
committerGeorge Mount <mount@google.com>2011-10-03 14:40:52 -0700
commit1fa26cbfc883ef76a46234d104906a1a9a515fc5 (patch)
treef778615f91db8cda09bee1a5562da358ea7efbab /core/java/android/webkit
parent8ebf1efd66516340bedbf0d0a19d5e96cc28fa20 (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.java6
-rw-r--r--core/java/android/webkit/WebView.java9
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;