Return `RESULT_CONTINUE` in `DesktopModeLaunchParamsModifier`
Return `RESULT_CONTINUE` instead of `RESULT_DONE` in
`DesktopModeLaunchParamsModifier`. This allows the default modifer
(`TaskLaunchParamsModifier`) to also have an influence on the launch
params and populate any fields that are required. The
`TaskLaunchParamsModifier` honours the values set by previous modifers
so we do not have to worried about anything gettings overridden.
Fixes: 338076897
Fixes: 336998072
Test: atest WmTests:DesktopModeLaunchParamsModifierTests
Test: atest CtsWindowManagerDeviceMultiDisplay:MultiDisplayPolicyTests
Test: atest CtsWindowManagerDeviceMultiDisplay:MultiDisplayClientTests
Test: atest CtsWindowManagerDeviceMultiDisplay:MultiDisplayActivityLaunchTests
Change-Id: Iffb29064711bba99f7dee7121a2a4f1cc1c82f47
diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
index 8069a93..d55e415 100644
--- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
@@ -118,19 +118,7 @@
}
if (phase == PHASE_WINDOWING_MODE) {
- return RESULT_DONE;
- }
-
- // TODO(b/336998072) - Find a better solution to this that makes use of the logic from
- // TaskLaunchParamsModifier. Put logic in common utils, return RESULT_CONTINUE, inherit
- // from parent class, etc.
- if (outParams.mPreferredTaskDisplayArea == null && task.getRootTask() != null) {
- appendLog("display-from-task=" + task.getRootTask().getDisplayId());
- outParams.mPreferredTaskDisplayArea = task.getRootTask().getDisplayArea();
- }
-
- if (phase == PHASE_DISPLAY_AREA) {
- return RESULT_DONE;
+ return RESULT_CONTINUE;
}
if (!currentParams.mBounds.isEmpty()) {
@@ -142,7 +130,7 @@
appendLog("setting desktop mode task bounds to %s", outParams.mBounds);
- return RESULT_DONE;
+ return RESULT_CONTINUE;
}
/**
diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
index 89ae802..c2bb162 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
@@ -26,7 +26,6 @@
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_DISPLAY;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_CONTINUE;
-import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_DONE;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_SKIP;
import static org.junit.Assert.assertEquals;
@@ -101,12 +100,12 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- public void testReturnsDoneIfDesktopWindowingIsEnabledAndUnsupportedDeviceOverridden() {
+ public void testReturnsContinueIfDesktopWindowingIsEnabledAndUnsupportedDeviceOverridden() {
setupDesktopModeLaunchParamsModifier(/*isDesktopModeSupported=*/ true,
/*enforceDeviceRestrictions=*/ false);
final Task task = new TaskBuilder(mSupervisor).build();
- assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
+ assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
}
@Test
@@ -139,22 +138,22 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- public void testReturnsDoneIfTaskUsingActivityTypeStandard() {
+ public void testReturnsContinueIfTaskUsingActivityTypeStandard() {
setupDesktopModeLaunchParamsModifier();
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_STANDARD).build();
- assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
+ assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- public void testReturnsDoneIfTaskUsingActivityTypeUndefined() {
+ public void testReturnsContinueIfTaskUsingActivityTypeUndefined() {
setupDesktopModeLaunchParamsModifier();
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_UNDEFINED).build();
- assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
+ assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
}
@Test
@@ -180,7 +179,7 @@
task.getDisplayArea().setBounds(new Rect(0, 0, displayWidth, displayHeight));
final int desiredWidth = (int) (displayWidth * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
final int desiredHeight = (int) (displayHeight * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
- assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
+ assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
assertEquals(desiredWidth, mResult.mBounds.width());
assertEquals(desiredHeight, mResult.mBounds.height());
}
@@ -196,7 +195,7 @@
mCurrent.mPreferredTaskDisplayArea = mockTaskDisplayArea;
mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM;
- assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
+ assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
assertEquals(mockTaskDisplayArea, mResult.mPreferredTaskDisplayArea);
assertEquals(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode);
}