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

Commit b4d5decf authored by Graciela Wissen Putri's avatar Graciela Wissen Putri
Browse files

Pillarbox if user applied aspect ratio and orientation unspecified

Apps that are normally fullscreen will be letterboxed (horizontal
black bars) if user applies aspect ratio that is not fullscreen. We
apply pillarboxing (portrait black bars) instead if app did not specify
orientation.

Fix: 300486999
Test: atest LetterboxUiControllerTest
Change-Id: I47b1c65f0a04f1b677723f94d7998ed40e8832c6
parent 84afde0c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -661,6 +661,10 @@ final class LetterboxUiController {
    @ScreenOrientation
    int overrideOrientationIfNeeded(@ScreenOrientation int candidate) {
        if (shouldApplyUserFullscreenOverride()) {
            Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for "
                    + mActivityRecord + " is overridden to "
                    + screenOrientationToString(SCREEN_ORIENTATION_USER)
                    + " by user aspect ratio settings.");
            return SCREEN_ORIENTATION_USER;
        }

@@ -668,6 +672,14 @@ final class LetterboxUiController {
        // orientation.
        candidate = mActivityRecord.mWmService.mapOrientationRequest(candidate);

        if (shouldApplyUserMinAspectRatioOverride() && !isFixedOrientation(candidate)) {
            Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for "
                    + mActivityRecord + " is overridden to "
                    + screenOrientationToString(SCREEN_ORIENTATION_PORTRAIT)
                    + " by user aspect ratio settings.");
            return SCREEN_ORIENTATION_PORTRAIT;
        }

        if (FALSE.equals(mBooleanPropertyAllowOrientationOverride)) {
            return candidate;
        }
+22 −0
Original line number Diff line number Diff line
@@ -811,6 +811,28 @@ public class LetterboxUiControllerTest extends WindowTestsBase {
                /* candidate */ SCREEN_ORIENTATION_PORTRAIT), SCREEN_ORIENTATION_PORTRAIT);
    }

    @Test
    public void testOverrideOrientationIfNeeded_userAspectRatioApplied_unspecifiedOverridden() {
        spyOn(mController);
        doReturn(true).when(mController).shouldApplyUserMinAspectRatioOverride();

        assertEquals(mController.overrideOrientationIfNeeded(
                /* candidate */ SCREEN_ORIENTATION_UNSPECIFIED), SCREEN_ORIENTATION_PORTRAIT);

        // unchanged if orientation is specified
        assertEquals(mController.overrideOrientationIfNeeded(
                /* candidate */ SCREEN_ORIENTATION_LANDSCAPE), SCREEN_ORIENTATION_LANDSCAPE);
    }

    @Test
    public void testOverrideOrientationIfNeeded_userAspectRatioNotApplied_returnsUnchanged() {
        spyOn(mController);
        doReturn(false).when(mController).shouldApplyUserMinAspectRatioOverride();

        assertEquals(mController.overrideOrientationIfNeeded(
                /* candidate */ SCREEN_ORIENTATION_UNSPECIFIED), SCREEN_ORIENTATION_UNSPECIFIED);
    }

    // shouldApplyUser...Override
    @Test
    public void testShouldApplyUserFullscreenOverride_trueProperty_returnsFalse() throws Exception {