Loading services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +7 −0 Original line number Diff line number Diff line Loading @@ -303,8 +303,15 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } else { if (DEBUG) appendLog("non-freeform-task-display-area"); } final boolean isUpdatingExistingTaskWindowingMode = task != null && task.getRequestedOverrideWindowingMode() != WINDOWING_MODE_UNDEFINED && launchMode != task.getRequestedOverrideWindowingMode(); if (DEBUG && isUpdatingExistingTaskWindowingMode) { appendLog("updating-existing-task-windowing-mode"); } // If launch mode matches display windowing mode, let it inherit from display. outParams.mWindowingMode = launchMode == suggestedDisplayArea.getWindowingMode() && !isUpdatingExistingTaskWindowingMode ? WINDOWING_MODE_UNDEFINED : launchMode; if (phase == PHASE_WINDOWING_MODE) { Loading services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -627,6 +627,27 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FREEFORM); } @Test public void testLaunchWindowingModeUpdatesExistingTask() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); ActivityRecord activity = createSourceActivity(freeformDisplay); final Task task = activity.getTask(); task.setWindowingMode(WINDOWING_MODE_FULLSCREEN); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder() .setTask(task) .setOptions(options) .calculate()); assertEquals(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode); } @Test public void testBoundsInOptionsInfersFreeformWithResizeableActivity() { final ActivityOptions options = ActivityOptions.makeBasic(); Loading Loading
services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +7 −0 Original line number Diff line number Diff line Loading @@ -303,8 +303,15 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } else { if (DEBUG) appendLog("non-freeform-task-display-area"); } final boolean isUpdatingExistingTaskWindowingMode = task != null && task.getRequestedOverrideWindowingMode() != WINDOWING_MODE_UNDEFINED && launchMode != task.getRequestedOverrideWindowingMode(); if (DEBUG && isUpdatingExistingTaskWindowingMode) { appendLog("updating-existing-task-windowing-mode"); } // If launch mode matches display windowing mode, let it inherit from display. outParams.mWindowingMode = launchMode == suggestedDisplayArea.getWindowingMode() && !isUpdatingExistingTaskWindowingMode ? WINDOWING_MODE_UNDEFINED : launchMode; if (phase == PHASE_WINDOWING_MODE) { Loading
services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -627,6 +627,27 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FREEFORM); } @Test public void testLaunchWindowingModeUpdatesExistingTask() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); ActivityRecord activity = createSourceActivity(freeformDisplay); final Task task = activity.getTask(); task.setWindowingMode(WINDOWING_MODE_FULLSCREEN); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder() .setTask(task) .setOptions(options) .calculate()); assertEquals(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode); } @Test public void testBoundsInOptionsInfersFreeformWithResizeableActivity() { final ActivityOptions options = ActivityOptions.makeBasic(); Loading