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
This commit is contained in:
shawnlin
2022-03-25 15:53:34 +08:00
parent db2c726560
commit 34aad9e022

View File

@@ -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);
}