diff options
| author | 2024-12-03 14:53:26 +0000 | |
|---|---|---|
| committer | 2024-12-03 16:03:05 +0000 | |
| commit | f23c3bfe7afc66869fd0487e3604ffbc24e0c09b (patch) | |
| tree | 32d6ad61af98faadfcca0f5de65ff8c11cc9408f | |
| parent | d8dacaf6582c007dd1d69027c36bd1ee4b192f15 (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.java | 7 | ||||
| -rw-r--r-- | core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java | 4 |
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; } |