diff options
author | bcwhite <bcwhite@chromium.org> | 2014-09-26 10:46:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-26 17:47:03 +0000 |
commit | afdaf434f9435722f239de0954df3618156ae0a0 (patch) | |
tree | 3924aa5a08ee3d8538c980a732b6cec70100bd70 | |
parent | 0f5b57907d87fbd5692f00d414d69fb86ba4f1df (diff) | |
download | chromium_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.java | 16 |
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; } |