diff options
| author | Yohei Yukawa <yukawa@google.com> | 2017-02-16 17:19:00 -0800 |
|---|---|---|
| committer | Yohei Yukawa <yukawa@google.com> | 2017-02-16 17:19:00 -0800 |
| commit | 4e28668a152fb5fc1b28e0e953db27febaab485b (patch) | |
| tree | aab3667d1ac04f81e1120dbb192b752dafd44c8b /core/java/android/inputmethodservice/IInputMethodWrapper.java | |
| parent | 040e425b49437094acc936176f74e23dd72da1f1 (diff) | |
Fix duplicate calls of IMS#doStartInput()
This is another follow up CL to my previous CL [1], which had a bug
that InputMethodService#doStartInput() is now always called back twice.
There was a careless mistake when rebasing the CL [1] onto the previous
CL [2], which ended up with dispatching startInput() twice in
IInputMethodWrapper.
In short, InputMethod#dispatchStartInputWithToken() is the new way to
dispatch startInput()/restartInput(). We do not need to call both of
them.
[1]: I9921b381e02106dbffff5e0b3d13f0a1245ce807
6db3bfe33d92127d203ec872a0b353585a99f256
[2]: I476d0cf8cbb0a0134941854f9337d9ad15e66a71
f7526b58960608887b064670bb42f41aa28b8f41
Test: Set true to InputMethodService#DEBUG and make sure startInput()
and restartInput() are called in the following scenario.
1. Complete the setup wizard.
2. adb shell am start -a android.app.action.SET_NEW_PASSWORD
3. Proceed to "Choose your password" page
4. Make sure startInput() gets called only once.
5. Type "aaaa" then hit "CONTINUE" button.
6. Make sure restartInput() gets called only once.
Bug: 35079353
Fixes: 35442939
Change-Id: Ifde16c3fad5b787d4c9a11bd886943dfe96f9eb9
Diffstat (limited to 'core/java/android/inputmethodservice/IInputMethodWrapper.java')
| -rw-r--r-- | core/java/android/inputmethodservice/IInputMethodWrapper.java | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java index 562f40bc7513..765aff96c704 100644 --- a/core/java/android/inputmethodservice/IInputMethodWrapper.java +++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java @@ -172,12 +172,7 @@ class IInputMethodWrapper extends IInputMethod.Stub final InputConnection ic = inputContext != null ? new InputConnectionWrapper(mTarget, inputContext, missingMethods) : null; info.makeCompatible(mTargetSdkVersion); - if (restarting) { - inputMethod.restartInput(ic, info); - } else { - inputMethod.startInput(ic, info); - } - inputMethod.dispatchStartInputWithToken(ic, info, true /* initial */, + inputMethod.dispatchStartInputWithToken(ic, info, restarting /* restarting */, startInputToken); args.recycle(); return; |
