Loading services/core/java/com/android/server/wm/DisplayContent.java +9 −0 Original line number Diff line number Diff line Loading @@ -5150,6 +5150,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** @return the orientation of the display when it's rotation is ROTATION_0. */ int getNaturalOrientation() { return mBaseDisplayWidth <= mBaseDisplayHeight ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE; } /** * Returns the orientation which is used for app's Configuration (excluding decor insets) when * the display rotation is ROTATION_0. */ int getNaturalConfigurationOrientation() { final Configuration config = getConfiguration(); if (config.windowConfiguration.getDisplayRotation() == ROTATION_0) { return config.orientation; Loading services/core/java/com/android/server/wm/WindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -1589,7 +1589,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) { // NOSENSOR means the display's "natural" orientation, so return that. if (mDisplayContent != null) { return mDisplayContent.getNaturalOrientation(); return mDisplayContent.getNaturalConfigurationOrientation(); } } else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) { // LOCKED means the activity's orientation remains unchanged, so return existing value. Loading services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +7 −1 Original line number Diff line number Diff line Loading @@ -1003,7 +1003,13 @@ public class DisplayContentTests extends WindowTestsBase { dc.computeScreenConfiguration(config, ROTATION_0); dc.onRequestedOverrideConfigurationChanged(config); assertEquals(Configuration.ORIENTATION_LANDSCAPE, config.orientation); assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalOrientation()); assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalConfigurationOrientation()); window.setOverrideOrientation(SCREEN_ORIENTATION_NOSENSOR); assertEquals(Configuration.ORIENTATION_LANDSCAPE, window.getRequestedConfigurationOrientation()); // Note that getNaturalOrientation is based on logical display size. So it is portrait if // the display width equals to height. assertEquals(Configuration.ORIENTATION_PORTRAIT, dc.getNaturalOrientation()); } @Test Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +9 −0 Original line number Diff line number Diff line Loading @@ -5150,6 +5150,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** @return the orientation of the display when it's rotation is ROTATION_0. */ int getNaturalOrientation() { return mBaseDisplayWidth <= mBaseDisplayHeight ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE; } /** * Returns the orientation which is used for app's Configuration (excluding decor insets) when * the display rotation is ROTATION_0. */ int getNaturalConfigurationOrientation() { final Configuration config = getConfiguration(); if (config.windowConfiguration.getDisplayRotation() == ROTATION_0) { return config.orientation; Loading
services/core/java/com/android/server/wm/WindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -1589,7 +1589,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) { // NOSENSOR means the display's "natural" orientation, so return that. if (mDisplayContent != null) { return mDisplayContent.getNaturalOrientation(); return mDisplayContent.getNaturalConfigurationOrientation(); } } else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) { // LOCKED means the activity's orientation remains unchanged, so return existing value. Loading
services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +7 −1 Original line number Diff line number Diff line Loading @@ -1003,7 +1003,13 @@ public class DisplayContentTests extends WindowTestsBase { dc.computeScreenConfiguration(config, ROTATION_0); dc.onRequestedOverrideConfigurationChanged(config); assertEquals(Configuration.ORIENTATION_LANDSCAPE, config.orientation); assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalOrientation()); assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalConfigurationOrientation()); window.setOverrideOrientation(SCREEN_ORIENTATION_NOSENSOR); assertEquals(Configuration.ORIENTATION_LANDSCAPE, window.getRequestedConfigurationOrientation()); // Note that getNaturalOrientation is based on logical display size. So it is portrait if // the display width equals to height. assertEquals(Configuration.ORIENTATION_PORTRAIT, dc.getNaturalOrientation()); } @Test Loading