Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34aad9e0 authored by shawnlin's avatar shawnlin
Browse files

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
parent db2c7265
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -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);
    }