summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shan Huang <shanh@google.com> 2022-05-12 23:22:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-05-12 23:22:07 +0000
commitbd7ac0c64654ba373be94a46eb6a93b6876d1e64 (patch)
treed97c499fec96d66425c72a06143a74f28bd15ca6
parente320ce441d0f03f30d3ca5d95afeaf532ce60932 (diff)
parentc16b5740556d39e9cb2323ffdc164475bd757883 (diff)
Merge "Fix IME callback not being re-registered on screen off / on." into tm-dev
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java6
-rw-r--r--core/java/android/window/ImeOnBackInvokedDispatcher.java6
2 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 25296bc0a8b9..200fe22edaad 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -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) {
diff --git a/core/java/android/window/ImeOnBackInvokedDispatcher.java b/core/java/android/window/ImeOnBackInvokedDispatcher.java
index d5763aa25884..8bdf233b81c8 100644
--- a/core/java/android/window/ImeOnBackInvokedDispatcher.java
+++ b/core/java/android/window/ImeOnBackInvokedDispatcher.java
@@ -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();
}