Merge "Launch freeform activities in desktop mode" into main
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index 2dc4573..79a2090 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -906,7 +906,8 @@
                     task.taskId
             )
             return WindowContainerTransaction().also { wct ->
-                addMoveToFullscreenChanges(wct, task)
+                bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, task.taskId)
+                wct.reorder(task.token, true)
             }
         }
         // Desktop Mode is showing and we're launching a new Task - we might need to minimize
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index f67da55..14f57bd 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -1072,7 +1072,7 @@
     }
 
     @Test
-    fun handleRequest_freeformTask_freeformNotVisible_returnSwitchToFullscreenWCT() {
+    fun handleRequest_freeformTask_freeformNotVisible_reorderedToTop() {
         assumeTrue(ENABLE_SHELL_TRANSITIONS)
 
         val freeformTask1 = setUpFreeformTask()
@@ -1084,30 +1084,32 @@
                 Binder(),
                 createTransition(freeformTask2, type = TRANSIT_TO_FRONT)
             )
-        assertThat(result?.changes?.get(freeformTask2.token.asBinder())?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
+
+        assertThat(result?.hierarchyOps?.size).isEqualTo(2)
+        result!!.assertReorderAt(1, freeformTask2, toTop = true)
     }
 
     @Test
-    fun handleRequest_freeformTask_noOtherTasks_returnSwitchToFullscreenWCT() {
+    fun handleRequest_freeformTask_noOtherTasks_reorderedToTop() {
         assumeTrue(ENABLE_SHELL_TRANSITIONS)
 
         val task = createFreeformTask()
         val result = controller.handleRequest(Binder(), createTransition(task))
-        assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
+
+        assertThat(result?.hierarchyOps?.size).isEqualTo(1)
+        result!!.assertReorderAt(0, task, toTop = true)
     }
 
     @Test
-    fun handleRequest_freeformTask_freeformOnOtherDisplayOnly_returnSwitchToFullscreenWCT() {
+    fun handleRequest_freeformTask_freeformOnOtherDisplayOnly_reorderedToTop() {
         assumeTrue(ENABLE_SHELL_TRANSITIONS)
 
         val taskDefaultDisplay = createFreeformTask(displayId = DEFAULT_DISPLAY)
-        createFreeformTask(displayId = SECOND_DISPLAY)
+        val taskSecondDisplay = createFreeformTask(displayId = SECOND_DISPLAY)
 
         val result = controller.handleRequest(Binder(), createTransition(taskDefaultDisplay))
-        assertThat(result?.changes?.get(taskDefaultDisplay.token.asBinder())?.windowingMode)
-            .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
+        assertThat(result?.hierarchyOps?.size).isEqualTo(1)
+        result!!.assertReorderAt(0, taskDefaultDisplay, toTop = true)
     }
 
     @Test