Move VR preference for portrait orientation.

This code as written had two problems:
1) It assumed ROTATE_0 was portrait and
2) Only set a preference when an activity was compiled for sensor-based
  orientations.

This change fixes the ROTATE_0 assumption and provides a PORTRAIT
preference in VR mode for all activities that aren't explicitly
set screenOrientation to "portrait" or "landscape".

Bug: 63289312, 62862109
Test: In VR Mode, tested activity preferences of sensor, unspecified,
portrait and landscape both on the main display and the virtual display.

Change-Id: Ifa04cbcd021e2d744ff70e53cd53359b1ddf5877
This commit is contained in:
Santos Cordon
2017-07-21 12:08:53 -07:00
committed by Alex Sakhartchouk
parent 37a9991be9
commit 0b5d9692dc

View File

@@ -7046,6 +7046,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// Ignore sensor when demo rotation lock is enabled.
// Note that the dock orientation and HDMI rotation lock override this.
preferredRotation = mDemoRotation;
} else if (mPersistentVrModeEnabled) {
// While in VR, apps always prefer a portrait rotation. This does not change
// any apps that explicitly set landscape, but does cause sensors be ignored,
// and ignored any orientation lock that the user has set (this conditional
// should remain above the ORIENTATION_LOCKED conditional below).
preferredRotation = mPortraitRotation;
} else if (orientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
// Application just wants to remain locked in the last rotation.
preferredRotation = lastRotation;
@@ -7076,13 +7082,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|| mAllowAllRotations == 1
|| orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
|| orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_USER) {
// In VrMode, we report the sensor as always being in default orientation so:
// 1) The orientation doesn't change as the user moves their head.
// 2) 2D apps within VR show in the device's default orientation.
// This only overwrites the sensor-provided orientation and does not affect any
// explicit orientation preferences specified by any activities.
preferredRotation =
mPersistentVrModeEnabled ? Surface.ROTATION_0 : sensorRotation;
preferredRotation = sensorRotation;
} else {
preferredRotation = lastRotation;
}