summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbcwhite <bcwhite@chromium.org>2014-09-26 10:46:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-26 17:47:03 +0000
commitafdaf434f9435722f239de0954df3618156ae0a0 (patch)
tree3924aa5a08ee3d8538c980a732b6cec70100bd70
parent0f5b57907d87fbd5692f00d414d69fb86ba4f1df (diff)
downloadchromium_src-afdaf434f9435722f239de0954df3618156ae0a0.zip
chromium_src-afdaf434f9435722f239de0954df3618156ae0a0.tar.gz
chromium_src-afdaf434f9435722f239de0954df3618156ae0a0.tar.bz2
Increase safety of delayed-keyboard-dismiss to not call destroyed object.
BUG=413744 Review URL: https://codereview.chromium.org/611543002 Cr-Commit-Position: refs/heads/master@{#296973}
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
index 3b4ddee..9473beb 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
@@ -74,15 +74,22 @@ public class ImeAdapter {
}
private class DelayedDismissInput implements Runnable {
- private final long mNativeImeAdapter;
+ private long mNativeImeAdapter;
DelayedDismissInput(long nativeImeAdapter) {
mNativeImeAdapter = nativeImeAdapter;
}
+ // http://crbug.com/413744
+ void detach() {
+ mNativeImeAdapter = 0;
+ }
+
@Override
public void run() {
- attach(mNativeImeAdapter, sTextInputTypeNone, sTextInputFlagNone);
+ if (mNativeImeAdapter != 0) {
+ attach(mNativeImeAdapter, sTextInputTypeNone, sTextInputFlagNone);
+ }
dismissInput(true);
}
}
@@ -693,7 +700,10 @@ public class ImeAdapter {
@CalledByNative
void detach() {
- if (mDismissInput != null) mHandler.removeCallbacks(mDismissInput);
+ if (mDismissInput != null) {
+ mHandler.removeCallbacks(mDismissInput);
+ mDismissInput.detach();
+ }
mNativeImeAdapterAndroid = 0;
mTextInputType = 0;
}