Unbind InputMethod when app crashes

If a running app (with bound InputMethod) crashes, the currently running InputMethod is not
unbound. As a result, onBindInput is not called.
In order to fix this, IMMS.removeClient() should also unbind the current client and clear
the flag IMMS.mBoundToMethod.
With the fix, I haven't seen any test failures mentioned in bug.

Bug: 72399950
Fixes: 73274813
Test: atest InputMethodServiceLifecycleTest && atest FocusHandlingTest
Change-Id: I0c09381b43a8b96480976edafbc0b0ee40ae5de0
This commit is contained in:
Tarandeep Singh
2018-02-16 14:31:17 -08:00
parent 1d84b1734d
commit 93c00ceafb

View File

@@ -1706,6 +1706,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if (cs != null) {
clearClientSessionLocked(cs);
if (mCurClient == cs) {
if (mBoundToMethod) {
mBoundToMethod = false;
if (mCurMethod != null) {
executeOrSendMessage(mCurMethod, mCaller.obtainMessageO(
MSG_UNBIND_INPUT, mCurMethod));
}
}
mCurClient = null;
}
if (mCurFocusedWindowClient == cs) {