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

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

Merge "Notify client to clear intermediate rotated adjustments" into sc-dev am: e672bf13

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I72f1e13342e9cbd31ea6149bb29b749087db21e4
parents 69733e64 e672bf13
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1572,12 +1572,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        }
        final int rotation = rotationForActivityInDifferentOrientation(r);
        if (rotation == ROTATION_UNDEFINED) {
            // The display rotation won't be changed by current top activity. If there was fixed
            // rotation activity, its rotated state should be cleared to cancel the adjustments.
            if (hasTopFixedRotationLaunchingApp()
                    // Avoid breaking recents animation.
                    && !mFixedRotationLaunchingApp.getTask().isAnimatingByRecents()) {
                clearFixedRotationLaunchingApp();
            // The display rotation won't be changed by current top activity. The client side
            // adjustments of previous rotated activity should be cleared earlier. Otherwise if
            // the current top is in the same process, it may get the rotated state. The transform
            // will be cleared later with transition callback to ensure smooth animation.
            if (hasTopFixedRotationLaunchingApp()) {
                mFixedRotationLaunchingApp.notifyFixedRotationTransform(false /* enabled */);
            }
            return false;
        }
+1 −1
Original line number Diff line number Diff line
@@ -549,7 +549,7 @@ class WindowToken extends WindowContainer<WindowState> {
    }

    /** Notifies application side to enable or disable the rotation adjustment of display info. */
    private void notifyFixedRotationTransform(boolean enabled) {
    void notifyFixedRotationTransform(boolean enabled) {
        FixedRotationAdjustments adjustments = null;
        // A token may contain windows of the same processes or different processes. The list is
        // used to avoid sending the same adjustments to a process multiple times.
+3 −2
Original line number Diff line number Diff line
@@ -1489,7 +1489,7 @@ public class DisplayContentTests extends WindowTestsBase {
    }

    @Test
    public void testClearIntermediateFixedRotation() throws RemoteException {
    public void testClearIntermediateFixedRotationAdjustments() throws RemoteException {
        final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();
        mDisplayContent.setFixedRotationLaunchingApp(activity,
                (mDisplayContent.getRotation() + 1) % 4);
@@ -1508,7 +1508,8 @@ public class DisplayContentTests extends WindowTestsBase {
                ArgumentCaptor.forClass(FixedRotationAdjustmentsItem.class);
        verify(mAtm.getLifecycleManager(), atLeastOnce()).scheduleTransaction(
                eq(activity.app.getThread()), adjustmentsCaptor.capture());
        assertFalse(activity.hasFixedRotationTransform());
        // The transformation is kept for animation in real case.
        assertTrue(activity.hasFixedRotationTransform());
        final FixedRotationAdjustmentsItem clearAdjustments = FixedRotationAdjustmentsItem.obtain(
                activity.token, null /* fixedRotationAdjustments */);
        // The captor may match other items. The first one must be the item to clear adjustments.