From 79ce09a0fc349a3c324212023e0f971fc932371a Mon Sep 17 00:00:00 2001 From: Sean Stout Date: Tue, 2 Mar 2021 14:59:07 -0800 Subject: [PATCH] Modify multi-display Activity launching behavior When choosing the display on which to launch an Activity, prefer the display of the launching app over the display the launched Application is already on. Bug: 176199388 Test: manual - launch app on external display, launch via Launcher on primary display, relaunch on external display Change-Id: I95d8bce2662a0d38ce8399450ccf246a72afb9fd --- .../android/server/wm/TaskLaunchParamsModifier.java | 12 ++++++------ .../server/wm/TaskLaunchParamsModifierTests.java | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index f3b69e30b40ab..5c9918de5c8e4 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -380,6 +380,12 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } } + if (taskDisplayArea == null && source != null) { + final TaskDisplayArea sourceDisplayArea = source.getDisplayArea(); + if (DEBUG) appendLog("display-area-from-source=" + sourceDisplayArea); + taskDisplayArea = sourceDisplayArea; + } + Task rootTask = (taskDisplayArea == null && task != null) ? task.getRootTask() : null; if (rootTask != null) { @@ -387,12 +393,6 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { taskDisplayArea = rootTask.getDisplayArea(); } - if (taskDisplayArea == null && source != null) { - final TaskDisplayArea sourceDisplayArea = source.getDisplayArea(); - if (DEBUG) appendLog("display-area-from-source=" + sourceDisplayArea); - taskDisplayArea = sourceDisplayArea; - } - if (taskDisplayArea == null && options != null) { final int callerDisplayId = options.getCallerDisplayId(); final DisplayContent dc = diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java index a1e5afb8b7587..76049a0dd7965 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -195,7 +195,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { } @Test - public void testUsesTasksDisplayAreaIdPriorToSourceIfSet() { + public void testUsesSourcesDisplayAreaIdPriorToTaskIfSet() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); final TestDisplayContent fullscreenDisplay = createNewDisplayContent( @@ -211,7 +211,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { .setSource(source) .calculate()); - assertEquals(fullscreenDisplay.getDefaultTaskDisplayArea(), + assertEquals(freeformDisplay.getDefaultTaskDisplayArea(), mResult.mPreferredTaskDisplayArea); }