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

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

Merge "Use rotation animation for orientation change of non-occluded activity"...

Merge "Use rotation animation for orientation change of non-occluded activity" into rvc-dev am: e99df6db am: 086a38c6

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

Change-Id: Id84d2e2851e87fa98f759f8cf7115a23a2fb36c8
parents b4516929 086a38c6
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1185,6 +1185,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        }

        activity.onRemovedFromDisplay();
        if (activity == mFixedRotationLaunchingApp) {
            setFixedRotationLaunchingAppUnchecked(null);
        }
    }

    @Override
@@ -1468,6 +1471,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
            // It has been set and not yet finished.
            return true;
        }
        if (!r.occludesParent() || r.isVisible()) {
            // While entering or leaving a translucent or floating activity (e.g. dialog style),
            // there is a visible activity in the background. Then it still needs rotation animation
            // to cover the activity configuration change.
            return false;
        }
        if (checkOpening) {
            if (!mAppTransition.isTransitionSet() || !mOpeningApps.contains(r)) {
                // Apply normal rotation animation in case of the activity set different requested
@@ -5636,6 +5645,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
         */
        void onStartRecentsAnimation(@NonNull ActivityRecord r) {
            mAnimatingRecents = r;
            if (r.isVisible() && mFocusedApp != null && !mFocusedApp.occludesParent()) {
                // The recents activity has shown with the orientation determined by the top
                // activity, keep its current orientation to avoid flicking by the configuration
                // change of visible activity.
                return;
            }
            rotateInDifferentOrientationIfNeeded(r);
            if (r.hasFixedRotationTransform()) {
                // Set the record so we can recognize it to continue to update display orientation
+1 −0
Original line number Diff line number Diff line
@@ -1506,6 +1506,7 @@ public class ActivityRecordTests extends ActivityTestsBase {
                .setRotation((mActivity.getWindowConfiguration().getRotation() + 1) % 4)
                .build();
        setRotatedScreenOrientationSilently(mActivity);
        mActivity.setVisible(false);

        final IWindowSession session = WindowManagerGlobal.getWindowSession();
        spyOn(session);
+1 −0
Original line number Diff line number Diff line
@@ -456,6 +456,7 @@ public class AppWindowTokenTests extends WindowTestsBase {
    @Test
    public void testTransferStartingWindowSetFixedRotation() {
        final ActivityRecord topActivity = createTestActivityRecordForGivenTask(mTask);
        topActivity.setVisible(false);
        mTask.positionChildAt(topActivity, POSITION_TOP);
        mActivity.addStartingWindow(mPackageName,
                android.R.style.Theme, null, "Test", 0, 0, 0, 0, null, true, true, false, true,
+10 −0
Original line number Diff line number Diff line
@@ -1081,6 +1081,7 @@ public class DisplayContentTests extends WindowTestsBase {
        mDisplayContent.onRequestedOverrideConfigurationChanged(config);

        final ActivityRecord app = mAppWindow.mActivityRecord;
        app.setVisible(false);
        mDisplayContent.prepareAppTransition(WindowManager.TRANSIT_ACTIVITY_OPEN,
                false /* alwaysKeepCurrent */);
        mDisplayContent.mOpeningApps.add(app);
@@ -1135,6 +1136,7 @@ public class DisplayContentTests extends WindowTestsBase {
        // Launch another activity before the transition is finished.
        final ActivityRecord app2 = new ActivityTestsBase.StackBuilder(mWm.mRoot)
                .setDisplay(mDisplayContent).build().getTopMostActivity();
        app2.setVisible(false);
        mDisplayContent.mOpeningApps.add(app2);
        app2.setRequestedOrientation(newOrientation);

@@ -1277,6 +1279,14 @@ public class DisplayContentTests extends WindowTestsBase {
        mDisplayContent.setFixedRotationLaunchingAppUnchecked(mAppWindow.mActivityRecord);
        displayRotation.setRotation((displayRotation.getRotation() + 1) % 4);
        assertTrue(displayRotation.updateRotationUnchecked(false));

        // The recents activity should not apply fixed rotation if the top activity is not opaque.
        mDisplayContent.mFocusedApp = mAppWindow.mActivityRecord;
        doReturn(false).when(mDisplayContent.mFocusedApp).occludesParent();
        doReturn(ROTATION_90).when(mDisplayContent).rotationForActivityInDifferentOrientation(
                eq(recentsActivity));
        mDisplayContent.mFixedRotationTransitionListener.onStartRecentsAnimation(recentsActivity);
        assertFalse(recentsActivity.hasFixedRotationTransform());
    }

    @Test
+1 −0
Original line number Diff line number Diff line
@@ -517,6 +517,7 @@ public class SizeCompatTests extends ActivityTestsBase {
        setUpApp(new TestDisplayContent.Builder(mService, dw, dh).setNotch(notchHeight).build());
        addStatusBar(mActivity.mDisplayContent);

        mActivity.setVisible(false);
        mActivity.mDisplayContent.prepareAppTransition(WindowManager.TRANSIT_ACTIVITY_OPEN,
                false /* alwaysKeepCurrent */);
        mActivity.mDisplayContent.mOpeningApps.add(mActivity);