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

Commit 9ed05bc1 authored by Graciela Putri's avatar Graciela Putri Committed by Automerger Merge Worker
Browse files

Merge "[2/n] Override app orientation if user chooses fullscreen" into...

Merge "[2/n] Override app orientation if user chooses fullscreen" into udc-qpr-dev am: 3c7aa16b am: 3217e475

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24176524



Change-Id: I4472296c32e1b9aba504fee0c64eed8e97ef603f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents fe20ce9e 3217e475
Loading
Loading
Loading
Loading
+33 −9
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER;
import static android.content.pm.ActivityInfo.isFixedOrientation;
import static android.content.pm.ActivityInfo.isFixedOrientation;
import static android.content.pm.ActivityInfo.isFixedOrientationLandscape;
import static android.content.pm.ActivityInfo.isFixedOrientationLandscape;
import static android.content.pm.ActivityInfo.screenOrientationToString;
import static android.content.pm.ActivityInfo.screenOrientationToString;
@@ -44,6 +45,7 @@ import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_16_9;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_3_2;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_3_2;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_4_3;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_4_3;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_DISPLAY_SIZE;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_DISPLAY_SIZE;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
@@ -642,6 +644,10 @@ final class LetterboxUiController {


    @ScreenOrientation
    @ScreenOrientation
    int overrideOrientationIfNeeded(@ScreenOrientation int candidate) {
    int overrideOrientationIfNeeded(@ScreenOrientation int candidate) {
        if (shouldApplyUserFullscreenOverride()) {
            return SCREEN_ORIENTATION_USER;
        }

        // In some cases (e.g. Kids app) we need to map the candidate orientation to some other
        // In some cases (e.g. Kids app) we need to map the candidate orientation to some other
        // orientation.
        // orientation.
        candidate = mActivityRecord.mWmService.mapOrientationRequest(candidate);
        candidate = mActivityRecord.mWmService.mapOrientationRequest(candidate);
@@ -1103,20 +1109,28 @@ final class LetterboxUiController {
    }
    }


    boolean shouldApplyUserMinAspectRatioOverride() {
    boolean shouldApplyUserMinAspectRatioOverride() {
        if (!mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled()) {
        if (!mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled()
                || mActivityRecord.mDisplayContent == null
                || !mActivityRecord.mDisplayContent.getIgnoreOrientationRequest()) {
            return false;
            return false;
        }
        }


        try {
        mUserAspectRatio = getUserMinAspectRatioOverrideCode();
            final int userAspectRatio = mActivityRecord.mAtmService.getPackageManager()

                    .getUserMinAspectRatio(mActivityRecord.packageName, mActivityRecord.mUserId);
        return mUserAspectRatio != USER_MIN_ASPECT_RATIO_UNSET
            mUserAspectRatio = userAspectRatio;
                && mUserAspectRatio != USER_MIN_ASPECT_RATIO_FULLSCREEN;
            return userAspectRatio != USER_MIN_ASPECT_RATIO_UNSET;
    }
        } catch (RemoteException e) {

            // Don't apply user aspect ratio override
    boolean shouldApplyUserFullscreenOverride() {
            Slog.w(TAG, "Exception thrown retrieving aspect ratio user override " + this, e);
        if (!mLetterboxConfiguration.isUserAppAspectRatioFullscreenEnabled()
                || mActivityRecord.mDisplayContent == null
                || !mActivityRecord.mDisplayContent.getIgnoreOrientationRequest()) {
            return false;
            return false;
        }
        }

        mUserAspectRatio = getUserMinAspectRatioOverrideCode();

        return mUserAspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN;
    }
    }


    float getUserMinAspectRatio() {
    float getUserMinAspectRatio() {
@@ -1137,6 +1151,16 @@ final class LetterboxUiController {
        }
        }
    }
    }


    private int getUserMinAspectRatioOverrideCode() {
        try {
            return mActivityRecord.mAtmService.getPackageManager()
                    .getUserMinAspectRatio(mActivityRecord.packageName, mActivityRecord.mUserId);
        } catch (RemoteException e) {
            Slog.w(TAG, "Exception thrown retrieving aspect ratio user override " + this, e);
        }
        return mUserAspectRatio;
    }

    private float getDisplaySizeMinAspectRatio() {
    private float getDisplaySizeMinAspectRatio() {
        final DisplayArea displayArea = mActivityRecord.getDisplayArea();
        final DisplayArea displayArea = mActivityRecord.getDisplayArea();
        if (displayArea == null) {
        if (displayArea == null) {
+29 −0
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.InsetsSource.FLAG_INSETS_ROUNDED_CORNER;
import static android.view.InsetsSource.FLAG_INSETS_ROUNDED_CORNER;
@@ -778,6 +779,34 @@ public class LetterboxUiControllerTest extends WindowTestsBase {
                /* candidate */ SCREEN_ORIENTATION_UNSPECIFIED), SCREEN_ORIENTATION_PORTRAIT);
                /* candidate */ SCREEN_ORIENTATION_UNSPECIFIED), SCREEN_ORIENTATION_PORTRAIT);
    }
    }


    @Test
    public void testOverrideOrientationIfNeeded_userFullscreenOverride_returnsUser() {
        spyOn(mController);
        doReturn(true).when(mController).shouldApplyUserFullscreenOverride();

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

    @Test
    @EnableCompatChanges({OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_ANY_ORIENTATION})
    public void testOverrideOrientationIfNeeded_userFullScreenOverrideOverSystem_returnsUser() {
        spyOn(mController);
        doReturn(true).when(mController).shouldApplyUserFullscreenOverride();

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

    @Test
    public void testOverrideOrientationIfNeeded_userFullScreenOverrideDisabled_returnsUnchanged() {
        spyOn(mController);
        doReturn(false).when(mController).shouldApplyUserFullscreenOverride();

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

    // shouldUseDisplayLandscapeNaturalOrientation
    // shouldUseDisplayLandscapeNaturalOrientation


    @Test
    @Test