Loading services/core/java/com/android/server/wm/LaunchParamsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -144,11 +144,11 @@ class LaunchParamsController { mTmpParams.mPreferredTaskDisplayArea, true /* onTop */); } if (mTmpParams.hasWindowingMode() && mTmpParams.mWindowingMode != task.getRootTask().getWindowingMode()) { if (mTmpParams.hasWindowingMode() && task.isRootTask() && mTmpParams.mWindowingMode != task.getWindowingMode()) { final int activityType = activity != null ? activity.getActivityType() : task.getActivityType(); task.getRootTask().setWindowingMode(task.getDisplayArea().validateWindowingMode( task.setWindowingMode(task.getDisplayArea().validateWindowingMode( mTmpParams.mWindowingMode, activity, task, activityType)); } Loading services/core/java/com/android/server/wm/TaskDisplayArea.java +3 −4 Original line number Diff line number Diff line Loading @@ -1305,10 +1305,9 @@ final class TaskDisplayArea extends DisplayArea<Task> { final int windowingMode = windowingModes[j]; for (int i = getStackCount() - 1; i >= 0; --i) { final Task stack = getStackAt(i); if (!stack.isActivityTypeStandardOrUndefined()) { continue; } if (stack.getWindowingMode() != windowingMode) { if (stack.mCreatedByOrganizer || !stack.isActivityTypeStandardOrUndefined() || stack.getWindowingMode() != windowingMode) { continue; } stacks.add(stack); Loading services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java +24 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.wm; 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_SECONDARY; import static android.view.Display.INVALID_DISPLAY; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; Loading Loading @@ -318,6 +319,29 @@ public class LaunchParamsControllerTests extends WindowTestsBase { assertEquals(windowingMode, afterWindowMode); } /** * Ensures that {@link LaunchParamsModifier} doesn't alter non-root tasks' windowingMode. */ @Test public void testLayoutNonRootTaskWindowingModeChange() { final LaunchParams params = new LaunchParams(); final int windowingMode = WINDOWING_MODE_FREEFORM; params.mWindowingMode = windowingMode; final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params); final Task task = new TaskBuilder(mAtm.mStackSupervisor).setCreateParentTask(true).build(); task.getRootTask().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); mController.registerModifier(positioner); final int beforeWindowMode = task.getWindowingMode(); assertNotEquals(windowingMode, beforeWindowMode); mController.layoutTask(task, null /* windowLayout */); final int afterWindowMode = task.getWindowingMode(); assertEquals(afterWindowMode, beforeWindowMode); } /** * Ensures that {@link LaunchParamsModifier} requests specifying bounds during * layout are honored if window is in freeform. Loading Loading
services/core/java/com/android/server/wm/LaunchParamsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -144,11 +144,11 @@ class LaunchParamsController { mTmpParams.mPreferredTaskDisplayArea, true /* onTop */); } if (mTmpParams.hasWindowingMode() && mTmpParams.mWindowingMode != task.getRootTask().getWindowingMode()) { if (mTmpParams.hasWindowingMode() && task.isRootTask() && mTmpParams.mWindowingMode != task.getWindowingMode()) { final int activityType = activity != null ? activity.getActivityType() : task.getActivityType(); task.getRootTask().setWindowingMode(task.getDisplayArea().validateWindowingMode( task.setWindowingMode(task.getDisplayArea().validateWindowingMode( mTmpParams.mWindowingMode, activity, task, activityType)); } Loading
services/core/java/com/android/server/wm/TaskDisplayArea.java +3 −4 Original line number Diff line number Diff line Loading @@ -1305,10 +1305,9 @@ final class TaskDisplayArea extends DisplayArea<Task> { final int windowingMode = windowingModes[j]; for (int i = getStackCount() - 1; i >= 0; --i) { final Task stack = getStackAt(i); if (!stack.isActivityTypeStandardOrUndefined()) { continue; } if (stack.getWindowingMode() != windowingMode) { if (stack.mCreatedByOrganizer || !stack.isActivityTypeStandardOrUndefined() || stack.getWindowingMode() != windowingMode) { continue; } stacks.add(stack); Loading
services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java +24 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.wm; 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_SECONDARY; import static android.view.Display.INVALID_DISPLAY; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; Loading Loading @@ -318,6 +319,29 @@ public class LaunchParamsControllerTests extends WindowTestsBase { assertEquals(windowingMode, afterWindowMode); } /** * Ensures that {@link LaunchParamsModifier} doesn't alter non-root tasks' windowingMode. */ @Test public void testLayoutNonRootTaskWindowingModeChange() { final LaunchParams params = new LaunchParams(); final int windowingMode = WINDOWING_MODE_FREEFORM; params.mWindowingMode = windowingMode; final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params); final Task task = new TaskBuilder(mAtm.mStackSupervisor).setCreateParentTask(true).build(); task.getRootTask().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY); mController.registerModifier(positioner); final int beforeWindowMode = task.getWindowingMode(); assertNotEquals(windowingMode, beforeWindowMode); mController.layoutTask(task, null /* windowLayout */); final int afterWindowMode = task.getWindowingMode(); assertEquals(afterWindowMode, beforeWindowMode); } /** * Ensures that {@link LaunchParamsModifier} requests specifying bounds during * layout are honored if window is in freeform. Loading