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

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

Merge "Unset last orientation for fixed orientation transient launch" into tm-dev am: 4fa92e4a

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

Change-Id: Ide87d355add05572a769c3bae21e4f73a0f59620
parents 9932a018 4fa92e4a
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -6362,10 +6362,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        }

        /**
         * Returns the fixed orientation requested by a transient launch (e.g. recents animation).
         * If it doesn't return SCREEN_ORIENTATION_UNSET, the rotation change should be deferred.
         * Returns {@code true} if the transient launch (e.g. recents animation) requested a fixed
         * orientation, then the rotation change should be deferred.
         */
        @ActivityInfo.ScreenOrientation int getTransientFixedOrientation() {
        boolean shouldDeferRotation() {
            ActivityRecord source = null;
            if (mTransitionController.isShellTransitionsEnabled()) {
                final ActivityRecord r = mFixedRotationLaunchingApp;
@@ -6377,13 +6377,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            }
            if (source == null || source.getRequestedConfigurationOrientation(
                    true /* forDisplay */) == ORIENTATION_UNDEFINED) {
                return SCREEN_ORIENTATION_UNSET;
                return false;
            }
            if (!mWmService.mPolicy.okToAnimate(false /* ignoreScreenOn */)) {
            // If screen is off or the device is going to sleep, then still allow to update.
                return SCREEN_ORIENTATION_UNSET;
            }
            return source.mOrientation;
            return mWmService.mPolicy.okToAnimate(false /* ignoreScreenOn */);
        }

        @Override
+2 −4
Original line number Diff line number Diff line
@@ -446,12 +446,10 @@ public class DisplayRotation {
                return false;
            }

            final int transientFixedOrientation =
                    mDisplayContent.mFixedRotationTransitionListener.getTransientFixedOrientation();
            if (transientFixedOrientation != SCREEN_ORIENTATION_UNSET) {
            if (mDisplayContent.mFixedRotationTransitionListener.shouldDeferRotation()) {
                // Makes sure that after the transition is finished, updateOrientation() can see
                // the difference from the latest orientation source.
                mLastOrientation = transientFixedOrientation;
                mLastOrientation = SCREEN_ORIENTATION_UNSET;
                // During the recents animation, the closing app might still be considered on top.
                // In order to ignore its requested orientation to avoid a sensor led rotation (e.g
                // user rotating the device while the recents animation is running), we ignore
+1 −1
Original line number Diff line number Diff line
@@ -451,7 +451,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
        final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation();
        final int topOrientation = DisplayContentTests.getRotatedOrientation(mDefaultDisplay);
        assertFalse(displayRotation.updateOrientation(topOrientation, false /* forceUpdate */));
        assertEquals(recents.mOrientation, displayRotation.getLastOrientation());
        assertEquals(ActivityInfo.SCREEN_ORIENTATION_UNSET, displayRotation.getLastOrientation());
        final int prevRotation = mDisplayContent.getRotation();
        mWm.cleanupRecentsAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);

+2 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
@@ -691,7 +692,7 @@ public class TransitionTests extends WindowTestsBase {
                anyInt() /* orientation */, anyInt() /* lastRotation */);
        // Rotation update is skipped while the recents animation is running.
        assertFalse(mDisplayContent.updateRotationUnchecked());
        assertEquals(SCREEN_ORIENTATION_NOSENSOR, displayRotation.getLastOrientation());
        assertEquals(SCREEN_ORIENTATION_UNSET, displayRotation.getLastOrientation());
        // Return to the app without fixed orientation from recents.
        app.moveFocusableActivityToTop("test");
        player.finish();