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

Commit 4c2b792c authored by Kevin Chyn's avatar Kevin Chyn
Browse files

Also reverse rotation for #freezeRotation path

When auto-rotation is disabled, users can apply the suggested rotation
using the rotation icon from SysUI. The sensor value passed to
DisplayRotation#freezeRotation(int) that comes from
WindowManagerService#freezeDisplayRotation also needs to apply the
same reversing logic as DisplayRotation#rotationForOrientation.

Fixes: 275286150
Test: atest DisplayRotationTests
Change-Id: I985ae560d8eff6ea063206c1e39bd694ab576fde
Merged-In: I985ae560d8eff6ea063206c1e39bd694ab576fde
parent c3039468
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -913,6 +913,16 @@ public class DisplayRotation {
    }

    void freezeRotation(int rotation) {
        if (mDeviceStateController.shouldReverseRotationDirectionAroundZAxis()) {
            // Flipping 270 and 90 has the same effect as changing the direction which rotation is
            // applied.
            if (rotation == Surface.ROTATION_90) {
                rotation = Surface.ROTATION_270;
            } else if (rotation == Surface.ROTATION_270) {
                rotation = Surface.ROTATION_90;
            }
        }

        rotation = (rotation == -1) ? mRotation : rotation;
        setUserRotation(WindowManagerPolicy.USER_ROTATION_LOCKED, rotation);
    }
+18 −0
Original line number Diff line number Diff line
@@ -537,6 +537,24 @@ public class DisplayRotationTests {
                SCREEN_ORIENTATION_UNSPECIFIED, Surface.ROTATION_180));
    }

    @Test
    public void testFreezeRotation_reverseRotationDirectionAroundZAxis_yes() throws Exception {
        mBuilder.build();
        when(mDeviceStateController.shouldReverseRotationDirectionAroundZAxis()).thenReturn(true);

        freezeRotation(Surface.ROTATION_90);
        assertEquals(Surface.ROTATION_270, mTarget.getUserRotation());
    }

    @Test
    public void testFreezeRotation_reverseRotationDirectionAroundZAxis_no() throws Exception {
        mBuilder.build();
        when(mDeviceStateController.shouldReverseRotationDirectionAroundZAxis()).thenReturn(false);

        freezeRotation(Surface.ROTATION_90);
        assertEquals(Surface.ROTATION_90, mTarget.getUserRotation());
    }

    private boolean waitForUiHandler() {
        final CountDownLatch latch = new CountDownLatch(1);
        UiThread.getHandler().post(latch::countDown);