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

Commit d04a6e04 authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Merge "Respect letterbox config for exiting pip with fixed orientation" into...

Merge "Respect letterbox config for exiting pip with fixed orientation" into tm-qpr-dev am: 2ef0be23 am: 125f8371

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



Change-Id: I7ac0be0a10a09535ff2764a8673b466cc20b683e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ef806795 125f8371
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -7813,11 +7813,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                newParentConfiguration.windowConfiguration.getWindowingMode();
        final boolean isFixedOrientationLetterboxAllowed =
                parentWindowingMode == WINDOWING_MODE_MULTI_WINDOW
                        || parentWindowingMode == WINDOWING_MODE_FULLSCREEN;
                        || parentWindowingMode == WINDOWING_MODE_FULLSCREEN
                        // Switching from PiP to fullscreen.
                        || (parentWindowingMode == WINDOWING_MODE_PINNED
                                && resolvedConfig.windowConfiguration.getWindowingMode()
                                        == WINDOWING_MODE_FULLSCREEN);
        // TODO(b/181207944): Consider removing the if condition and always run
        // resolveFixedOrientationConfiguration() since this should be applied for all cases.
        if (isFixedOrientationLetterboxAllowed) {
            resolveFixedOrientationConfiguration(newParentConfiguration, parentWindowingMode);
            resolveFixedOrientationConfiguration(newParentConfiguration);
        }

        if (mCompatDisplayInsets != null) {
@@ -8109,8 +8113,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
     * <p>If letterboxed due to fixed orientation then aspect ratio restrictions are also applied
     * in this method.
     */
    private void resolveFixedOrientationConfiguration(@NonNull Configuration newParentConfig,
            int windowingMode) {
    private void resolveFixedOrientationConfiguration(@NonNull Configuration newParentConfig) {
        mLetterboxBoundsForFixedOrientationAndAspectRatio = null;
        mIsEligibleForFixedOrientationLetterbox = false;
        final Rect parentBounds = newParentConfig.windowConfiguration.getBounds();
@@ -8130,11 +8133,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        if (organizedTf != null && !organizedTf.fillsParent()) {
            return;
        }
        if (windowingMode == WINDOWING_MODE_PINNED) {
            // PiP bounds have higher priority than the requested orientation. Otherwise the
            // activity may be squeezed into a small piece.
            return;
        }

        final Rect resolvedBounds =
                getResolvedOverrideConfiguration().windowConfiguration.getBounds();
+2 −1
Original line number Diff line number Diff line
@@ -1611,7 +1611,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        if (mTransitionController.useShellTransitionsRotation()) {
            return ROTATION_UNDEFINED;
        }
        if (!WindowManagerService.ENABLE_FIXED_ROTATION_TRANSFORM) {
        if (!WindowManagerService.ENABLE_FIXED_ROTATION_TRANSFORM
                || getIgnoreOrientationRequest()) {
            return ROTATION_UNDEFINED;
        }
        if (r.mOrientation == ActivityInfo.SCREEN_ORIENTATION_BEHIND) {
+7 −0
Original line number Diff line number Diff line
@@ -1699,6 +1699,13 @@ public class DisplayContentTests extends WindowTestsBase {
        assertFalse(displayContent.mPinnedTaskController.isFreezingTaskConfig(pinnedTask));
        assertEquals(pinnedActivity.getConfiguration().orientation,
                displayContent.getConfiguration().orientation);

        // No need to apply rotation if the display ignores orientation request.
        doCallRealMethod().when(displayContent).rotationForActivityInDifferentOrientation(any());
        pinnedActivity.mOrientation = SCREEN_ORIENTATION_LANDSCAPE;
        displayContent.setIgnoreOrientationRequest(true);
        assertEquals(WindowConfiguration.ROTATION_UNDEFINED,
                displayContent.rotationForActivityInDifferentOrientation(pinnedActivity));
    }

    @Test