summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Felix Stern <fstern@google.com> 2024-12-03 14:53:26 +0000
committer Felix Stern <fstern@google.com> 2024-12-03 16:03:05 +0000
commitf23c3bfe7afc66869fd0487e3604ffbc24e0c09b (patch)
tree32d6ad61af98faadfcca0f5de65ff8c11cc9408f
parentd8dacaf6582c007dd1d69027c36bd1ee4b192f15 (diff)
Passing Ime statsToken from InputMethodManager to InsetsController
Calls from InputMethodManager are in general redirected to InsetsController. In case of InputMethodManager#hideSoftInputFromWindow and InputMethodManager.DelegateImpl#onWindowLostFocus, we didn't pass the statsToken. Thus, the request was only tracked from InsetsController. To have the right origin, we pass the statsToken now. Test: None, logs only Fix: 382006185 Flag: android.view.inputmethod.refactor_insets_controller Change-Id: I4197726ae3f4918d7fb52e2757721ddf5d2d105d
-rw-r--r--core/java/android/view/inputmethod/InputMethodManager.java7
-rw-r--r--core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java4
2 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 5dd29b26730d..6d89f3d89077 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -946,11 +946,16 @@ public final class InputMethodManager {
if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
// when losing focus (e.g., by going to another window), we reset the
// requestedVisibleTypes of WindowInsetsController by hiding the IME
+ final var statsToken = ImeTracker.forLogging().onStart(
+ ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
+ SoftInputShowHideReason.REASON_HIDE_WINDOW_LOST_FOCUS,
+ false /* fromUser */);
if (DEBUG) {
Log.d(TAG, "onWindowLostFocus, hiding IME because "
+ "of STATE_ALWAYS_HIDDEN");
}
- mCurRootView.getInsetsController().hide(WindowInsets.Type.ime());
+ mCurRootView.getInsetsController().hide(WindowInsets.Type.ime(),
+ false /* fromIme */, statsToken);
}
}
diff --git a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java
index 429a6a267bb1..592ea9e5e600 100644
--- a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java
+++ b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java
@@ -91,6 +91,7 @@ import java.lang.annotation.Retention;
SoftInputShowHideReason.CONTROL_WINDOW_INSETS_ANIMATION,
SoftInputShowHideReason.SHOW_INPUT_TARGET_CHANGED,
SoftInputShowHideReason.HIDE_INPUT_TARGET_CHANGED,
+ SoftInputShowHideReason.REASON_HIDE_WINDOW_LOST_FOCUS,
})
public @interface SoftInputShowHideReason {
/** Default, undefined reason. */
@@ -418,4 +419,7 @@ public @interface SoftInputShowHideReason {
* {@link android.view.InsetsController#controlWindowInsetsAnimation}.
*/
int CONTROL_WINDOW_INSETS_ANIMATION = ImeProtoEnums.REASON_CONTROL_WINDOW_INSETS_ANIMATION;
+
+ /** Hide soft input when the window lost focus. */
+ int REASON_HIDE_WINDOW_LOST_FOCUS = ImeProtoEnums.REASON_HIDE_WINDOW_LOST_FOCUS;
}