Merge "Fix IME callback not being re-registered on screen off / on." into tm-dev am: bd7ac0c646

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18310689

Change-Id: I48b28b3c6e1ed6c44b73e055b675f38638080f81
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Shan Huang
2022-05-12 23:30:32 +00:00
committed by Automerger Merge Worker
2 changed files with 11 additions and 1 deletions

View File

@@ -1625,7 +1625,6 @@ public class InputMethodService extends AbstractInputMethodService {
// when IME developers are doing something unsupported.
InputMethodPrivilegedOperationsRegistry.remove(mToken);
}
unregisterCompatOnBackInvokedCallback();
mImeDispatcher = null;
}
@@ -2788,6 +2787,11 @@ public class InputMethodService extends AbstractInputMethodService {
if (mInkWindow != null) {
finishStylusHandwriting();
}
// Back callback is typically unregistered in {@link #hideWindow()}, but it's possible
// for {@link #doFinishInput()} to be called without {@link #hideWindow()} so we also
// unregister here.
// TODO(b/232341407): Add CTS to verify back behavior after screen on / off.
unregisterCompatOnBackInvokedCallback();
}
void doStartInput(InputConnection ic, EditorInfo attribute, boolean restarting) {

View File

@@ -158,6 +158,12 @@ public class ImeOnBackInvokedDispatcher implements OnBackInvokedDispatcher, Parc
/** Clears all registered callbacks on the instance. */
public void clear() {
// Unregister previously registered callbacks if there's any.
if (getReceivingDispatcher() != null) {
for (OnBackInvokedCallback callback : mImeCallbackMap.values()) {
getReceivingDispatcher().unregisterOnBackInvokedCallback(callback);
}
}
mImeCallbackMap.clear();
}