diff options
2 files changed, 11 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt index e187d2c3f895..bccb609c41e8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt @@ -333,7 +333,9 @@ class DesktopRepository( */ private fun addOrMoveFreeformTaskToTop(displayId: Int, taskId: Int) { logD("Add or move task to top: display=%d taskId=%d", taskId, displayId) - desktopTaskDataByDisplayId[displayId]?.freeformTasksInZOrder?.remove(taskId) + desktopTaskDataByDisplayId.forEach { _, value -> + value.freeformTasksInZOrder.remove(taskId) + } desktopTaskDataByDisplayId.getOrCreate(displayId).freeformTasksInZOrder.add(0, taskId) // Unminimize the task if it is minimized. unminimizeTask(displayId, taskId) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt index 9059d7d5342c..344140d91ab3 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt @@ -149,6 +149,14 @@ class DesktopRepositoryTest : ShellTestCase() { } @Test + fun addTask_multipleDisplays_moveToAnotherDisplay() { + repo.addTask(DEFAULT_DISPLAY, taskId = 1, isVisible = true) + repo.addTask(SECOND_DISPLAY, taskId = 1, isVisible = true) + assertThat(repo.getFreeformTasksInZOrder(DEFAULT_DISPLAY)).isEmpty() + assertThat(repo.getFreeformTasksInZOrder(SECOND_DISPLAY)).containsExactly(1) + } + + @Test fun removeActiveTask_notifiesActiveTaskListener() { val listener = TestListener() repo.addActiveTaskListener(listener) |