summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Felix Stern <fstern@google.com> 2024-07-31 13:51:27 +0000
committer Felix Stern <fstern@google.com> 2024-08-04 09:34:26 +0000
commit32b30fc445cb0c4f4dec9dbd8510d7e8ece03c82 (patch)
treea7230acad1cb3bb3bab0867f21c49698512bfd81
parent4c347ab6f4765ce0282e819f916dc15febe52711 (diff)
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
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java6
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java2
2 files changed, 7 insertions, 1 deletions
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());