From 32b30fc445cb0c4f4dec9dbd8510d7e8ece03c82 Mon Sep 17 00:00:00 2001 From: Felix Stern Date: Wed, 31 Jul 2024 13:51:27 +0000 Subject: Cancel startAnimation(show=true) if IME is not requested to be visible In the case when we have a control with a leash, and we're calling startAnimation(show=true), the animation should only start, if the IME was previously requested to be visible. Test: atest WMShellUnitTests:com.android.wm.shell.common.DisplayImeControllerTest Flag: android.view.inputmethod.refactor_insets_controller Fix: 355059468 Change-Id: Icba77bbe84cd90150017f29c9b34438c64435468 --- .../Shell/src/com/android/wm/shell/common/DisplayImeController.java | 6 ++++++ .../src/com/android/wm/shell/common/DisplayImeControllerTest.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'libs') diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index d7d19f7b8bbd..3fa51a909aaa 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -468,6 +468,12 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged if (mImeSourceControl == null || mImeSourceControl.getLeash() == null) { if (DEBUG) Slog.d(TAG, "No leash available, not starting the animation."); return; + } else if (!mImeRequestedVisible && show) { + // we have a control with leash, but the IME was not requested visible before, + // therefore aborting the show animation. + Slog.e(TAG, "IME was not requested visible, not starting the show animation."); + // TODO(b/353463205) fail statsToken here + return; } } final InsetsSource imeSource = mInsetsState.peekSource(InsetsSource.ID_IME); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java index 764d5a97e3e1..654d7a8ecf91 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java @@ -119,7 +119,7 @@ public class DisplayImeControllerTest extends ShellTestCase { @Test public void reappliesVisibilityToChangedLeash() { verifyZeroInteractions(mT); - mPerDisplay.mImeShowing = true; + mPerDisplay.mImeShowing = false; mPerDisplay.insetsControlChanged(insetsStateWithIme(false), insetsSourceControl()); -- cgit v1.2.3-59-g8ed1b