summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/tests/coretests/src/android/util/RotationUtilsTest.java16
-rw-r--r--services/core/java/com/android/server/wm/DisplayRotation.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java18
3 files changed, 38 insertions, 0 deletions
diff --git a/core/tests/coretests/src/android/util/RotationUtilsTest.java b/core/tests/coretests/src/android/util/RotationUtilsTest.java
index 1b1ee4fb1a1c..06b28f5b58ef 100644
--- a/core/tests/coretests/src/android/util/RotationUtilsTest.java
+++ b/core/tests/coretests/src/android/util/RotationUtilsTest.java
@@ -19,6 +19,7 @@ package android.util;
import static android.util.RotationUtils.rotateBounds;
import static android.util.RotationUtils.rotatePoint;
import static android.util.RotationUtils.rotatePointF;
+import static android.view.Surface.ROTATION_0;
import static android.view.Surface.ROTATION_180;
import static android.view.Surface.ROTATION_270;
import static android.view.Surface.ROTATION_90;
@@ -103,4 +104,19 @@ public class RotationUtilsTest {
assertEquals(560f, testResult.x, .1f);
assertEquals(60f, testResult.y, .1f);
}
+
+ @Test
+ public void testReverseRotationDirectionAroundZAxis() {
+ assertEquals(ROTATION_90,
+ RotationUtils.reverseRotationDirectionAroundZAxis(ROTATION_270));
+ assertEquals(ROTATION_270,
+ RotationUtils.reverseRotationDirectionAroundZAxis(ROTATION_90));
+ assertEquals(ROTATION_0,
+ RotationUtils.reverseRotationDirectionAroundZAxis(ROTATION_0));
+ assertEquals(ROTATION_180,
+ RotationUtils.reverseRotationDirectionAroundZAxis(ROTATION_180));
+
+ assertEquals(-1,
+ RotationUtils.reverseRotationDirectionAroundZAxis(-1));
+ }
}
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index 20048ce543f3..a5e652cce41e 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -946,6 +946,10 @@ public class DisplayRotation {
}
void freezeRotation(int rotation) {
+ if (mDeviceStateController.shouldReverseRotationDirectionAroundZAxis()) {
+ rotation = RotationUtils.reverseRotationDirectionAroundZAxis(rotation);
+ }
+
rotation = (rotation == -1) ? mRotation : rotation;
setUserRotation(WindowManagerPolicy.USER_ROTATION_LOCKED, rotation);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
index 4b2d1071d113..8e80485bca7c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
@@ -541,6 +541,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);