Loading services/core/java/com/android/server/wm/DisplayContent.java +4 −6 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.wm; import static android.app.ActivityTaskManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; Loading Loading @@ -4268,12 +4267,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo @Override int getOrientation() { if (isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) || isStackVisible(WINDOWING_MODE_FREEFORM)) { if (isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)) { // Apps and their containers are not allowed to specify an orientation while the // docked or freeform stack is visible...except for the home stack if the docked // stack is minimized and it actually set something and the bounds is different from // the display. // docked stack is visible...except for the home stack if the docked stack is // minimized and it actually set something and the bounds is different from the // display. if (mHomeStack != null && mHomeStack.isVisible() && mDividerControllerLocked.isMinimizedDock() && !(mDividerControllerLocked.isHomeStackResizable() Loading services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +32 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wm; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; Loading Loading @@ -699,6 +700,37 @@ public class DisplayContentTests extends WindowTestsBase { assertNull("default display Ime target: ", mDisplayContent.mInputMethodTarget); } @Test public void testAllowsTopmostFullscreenOrientation() { final DisplayContent dc = createNewDisplay(); dc.getDisplayRotation().setFixedToUserRotation( DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED); final ActivityStack stack = new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer) .setDisplay(dc.mActivityDisplay) .build(); doReturn(true).when(stack).isVisible(); final ActivityStack freeformStack = new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer) .setDisplay(dc.mActivityDisplay) .setWindowingMode(WINDOWING_MODE_FREEFORM) .build(); doReturn(true).when(freeformStack).isVisible(); freeformStack.getTopChild().setBounds(100, 100, 300, 400); assertTrue(dc.isStackVisible(WINDOWING_MODE_FREEFORM)); freeformStack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_LANDSCAPE); stack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_PORTRAIT); assertEquals(SCREEN_ORIENTATION_PORTRAIT, dc.getOrientation()); stack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_LANDSCAPE); freeformStack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_PORTRAIT); assertEquals(SCREEN_ORIENTATION_LANDSCAPE, dc.getOrientation()); } @Test public void testOnDescendantOrientationRequestChanged() { final DisplayContent dc = createNewDisplay(); Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +4 −6 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.wm; import static android.app.ActivityTaskManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; Loading Loading @@ -4268,12 +4267,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo @Override int getOrientation() { if (isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) || isStackVisible(WINDOWING_MODE_FREEFORM)) { if (isStackVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)) { // Apps and their containers are not allowed to specify an orientation while the // docked or freeform stack is visible...except for the home stack if the docked // stack is minimized and it actually set something and the bounds is different from // the display. // docked stack is visible...except for the home stack if the docked stack is // minimized and it actually set something and the bounds is different from the // display. if (mHomeStack != null && mHomeStack.isVisible() && mDividerControllerLocked.isMinimizedDock() && !(mDividerControllerLocked.isHomeStackResizable() Loading
services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +32 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wm; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; Loading Loading @@ -699,6 +700,37 @@ public class DisplayContentTests extends WindowTestsBase { assertNull("default display Ime target: ", mDisplayContent.mInputMethodTarget); } @Test public void testAllowsTopmostFullscreenOrientation() { final DisplayContent dc = createNewDisplay(); dc.getDisplayRotation().setFixedToUserRotation( DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED); final ActivityStack stack = new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer) .setDisplay(dc.mActivityDisplay) .build(); doReturn(true).when(stack).isVisible(); final ActivityStack freeformStack = new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer) .setDisplay(dc.mActivityDisplay) .setWindowingMode(WINDOWING_MODE_FREEFORM) .build(); doReturn(true).when(freeformStack).isVisible(); freeformStack.getTopChild().setBounds(100, 100, 300, 400); assertTrue(dc.isStackVisible(WINDOWING_MODE_FREEFORM)); freeformStack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_LANDSCAPE); stack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_PORTRAIT); assertEquals(SCREEN_ORIENTATION_PORTRAIT, dc.getOrientation()); stack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_LANDSCAPE); freeformStack.getTopNonFinishingActivity().setOrientation(SCREEN_ORIENTATION_PORTRAIT); assertEquals(SCREEN_ORIENTATION_LANDSCAPE, dc.getOrientation()); } @Test public void testOnDescendantOrientationRequestChanged() { final DisplayContent dc = createNewDisplay(); Loading