From 34aad9e022286a48dbd3853a71a0bebcc6454949 Mon Sep 17 00:00:00 2001 From: shawnlin Date: Fri, 25 Mar 2022 15:53:34 +0800 Subject: [PATCH] Fixed cts failure of WindowInsetsControllerTests If stashing taskbar is caused IME visiblity, we could just skip updating rounded corner insets since the rounded corners will be covered by IME during IME is showing and task bar will be restored back to unstashed when IME is hidden. Bug: 225765490 Test: atest WindowInsetsControllerTests Change-Id: If8f40add0d4d9f746169d26f46f27545b4023e90 --- .../taskbar/TaskbarStashController.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 54dd0b2379..e119bed664 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -64,6 +64,9 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba | FLAG_STASHED_IN_APP_PINNED | FLAG_STASHED_IN_APP_EMPTY | FLAG_STASHED_IN_APP_SETUP | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_APP_ALL_APPS; + private static final int FLAGS_STASHED_IN_APP_IGNORING_IME = + FLAGS_STASHED_IN_APP & ~FLAG_STASHED_IN_APP_IME; + // If any of these flags are enabled, inset apps by our stashed height instead of our unstashed // height. This way the reported insets are consistent even during transitions out of the app. // Currently any flag that causes us to stash in an app is included, except for IME or All Apps @@ -237,6 +240,13 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return hasAnyFlag(FLAGS_STASHED_IN_APP); } + /** + * Returns whether the taskbar should be stashed in apps regardless of the IME visibility. + */ + public boolean isStashedInAppIgnoringIme() { + return hasAnyFlag(FLAGS_STASHED_IN_APP_IGNORING_IME); + } + /** * Returns whether the taskbar should be stashed in the current LauncherState. */ @@ -585,7 +595,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private void notifyStashChange(boolean visible, boolean stashed) { mSystemUiProxy.notifyTaskbarStatus(visible, stashed); - mControllers.taskbarActivityContext.updateInsetRoundedCornerFrame(visible && !stashed); + // If stashing taskbar is caused by IME visibility, we could just skip updating rounded + // corner insets since the rounded corners will be covered by IME during IME is showing and + // taskbar will be restored back to unstashed when IME is hidden. + mControllers.taskbarActivityContext.updateInsetRoundedCornerFrame( + visible && !isStashedInAppIgnoringIme()); mControllers.rotationButtonController.onTaskbarStateChange(visible, stashed); }