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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user