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

Commit 1656b433 authored by David Lin's avatar David Lin Committed by Android (Google) Code Review
Browse files

Merge "Don't return half folded state when display in transition" into 24D1-dev

parents bd93cad1 4d7dc76d
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -918,12 +918,14 @@ final class LetterboxUiController {
    // Check if we are in the given pose and in fullscreen mode.
    // Note that we check the task rather than the parent as with ActivityEmbedding the parent might
    // be a TaskFragment, and its windowing mode is always MULTI_WINDOW, even if the task is
    // actually fullscreen.
    // actually fullscreen. If display is still in transition e.g. unfolding, don't return true
    // for HALF_FOLDED state or app will flicker.
    private boolean isDisplayFullScreenAndInPosture(boolean isTabletop) {
        Task task = mActivityRecord.getTask();
        return mActivityRecord.mDisplayContent != null && task != null
                && mActivityRecord.mDisplayContent.getDisplayRotation().isDeviceInPosture(
                        DeviceStateController.DeviceState.HALF_FOLDED, isTabletop)
                && !mActivityRecord.mDisplayContent.inTransition()
                && task.getWindowingMode() == WINDOWING_MODE_FULLSCREEN;
    }

+29 −0
Original line number Diff line number Diff line
@@ -4519,6 +4519,35 @@ public class SizeCompatTests extends WindowTestsBase {
        assertEquals(letterboxNoFold, mActivity.getBounds());
    }

    @Test
    public void testUpdateResolvedBoundsVerticalPosition_unfoldDisplay_notTabletop() {
        // Set up a display in portrait with a fixed-orientation LANDSCAPE app.
        setUpDisplaySizeWithApp(1000, 2000);
        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
        mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
                1.0f /*letterboxVerticalPositionMultiplier*/);
        prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);

        // Make the activity full-screen.
        mTask.setWindowingMode(WINDOWING_MODE_FULLSCREEN);

        // Simulate display unfolding.
        setFoldablePosture(true /* isHalfFolded */, true /* isTabletop */);
        doReturn(true).when(mActivity.mDisplayContent).inTransition();
        resizeDisplay(mTask.mDisplayContent, 1400, 2800);

        // Make sure app doesn't jump to top (default tabletop position) when unfolding.
        assertEquals(1.0f, mActivity.mLetterboxUiController.getVerticalPositionMultiplier(
                mActivity.getParent().getConfiguration()), 0);

        // Simulate display fully open after unfolding.
        setFoldablePosture(false /* isHalfFolded */, false /* isTabletop */);
        doReturn(false).when(mActivity.mDisplayContent).inTransition();

        assertEquals(1.0f, mActivity.mLetterboxUiController.getVerticalPositionMultiplier(
                mActivity.getParent().getConfiguration()), 0);
    }

    @Test
    public void testGetFixedOrientationLetterboxAspectRatio_tabletop_centered() {
        // Set up a display in portrait with a fixed-orientation LANDSCAPE app