Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ class DesktopModeShellCommandHandler( pw.println("Not supported.") return false } pw.println("Not implemented.") controller.removeAllDesks(exitReason = ExitReason.ADB_COMMAND_EXIT) return false } Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +17 −3 Original line number Diff line number Diff line Loading @@ -5205,9 +5205,23 @@ class DesktopTasksController( /** Removes all the available desks on all displays. */ fun removeAllDesks(userId: Int = shellController.currentUserId, exitReason: ExitReason) { val repository = userRepositories.getProfile(userId) repository.getAllDeskIds().forEach { deskId -> removeDesk(deskId = deskId, userId = userId, exitReason = exitReason) val deskIds = repository.getAllDeskIds() logV("removeAllDesks userId=%d reason=%s deskIds=%s", userId, exitReason, deskIds) val wct = WindowContainerTransaction() val runOnTransitStartList = deskIds.mapNotNull { deskId -> val displayId = repository.getDisplayForDesk(deskId) addDeskRemovalChanges( wct = wct, deskId = deskId, displayId = displayId, userId = userId, exitReason = exitReason, ) } if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && wct.isEmpty) return val transition = transitions.startTransition(TRANSIT_CLOSE, wct, /* handler= */ null) runOnTransitStartList.forEach { runOnTransitStart -> runOnTransitStart(transition) } } private fun removeDesk(displayId: Int, deskId: Int, userId: Int, exitReason: ExitReason) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +46 −1 Original line number Diff line number Diff line Loading @@ -7897,6 +7897,51 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() verify(recentTasksController).removeBackgroundTask(task3.taskId) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, ) fun removeAllDesks_multipleDesks_removesAllInSingleTransition() { val transition = Binder() whenever(transitions.startTransition(eq(TRANSIT_CLOSE), any(), anyOrNull())) .thenReturn(transition) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 4) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 5) controller.removeAllDesks( userId = taskRepository.userId, exitReason = ExitReason.UNKNOWN_EXIT, ) verify(transitions).startTransition(eq(TRANSIT_CLOSE), any(), anyOrNull()) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 3 } ) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 4 } ) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 5 } ) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION, Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ class DesktopModeShellCommandHandler( pw.println("Not supported.") return false } pw.println("Not implemented.") controller.removeAllDesks(exitReason = ExitReason.ADB_COMMAND_EXIT) return false } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +17 −3 Original line number Diff line number Diff line Loading @@ -5205,9 +5205,23 @@ class DesktopTasksController( /** Removes all the available desks on all displays. */ fun removeAllDesks(userId: Int = shellController.currentUserId, exitReason: ExitReason) { val repository = userRepositories.getProfile(userId) repository.getAllDeskIds().forEach { deskId -> removeDesk(deskId = deskId, userId = userId, exitReason = exitReason) val deskIds = repository.getAllDeskIds() logV("removeAllDesks userId=%d reason=%s deskIds=%s", userId, exitReason, deskIds) val wct = WindowContainerTransaction() val runOnTransitStartList = deskIds.mapNotNull { deskId -> val displayId = repository.getDisplayForDesk(deskId) addDeskRemovalChanges( wct = wct, deskId = deskId, displayId = displayId, userId = userId, exitReason = exitReason, ) } if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && wct.isEmpty) return val transition = transitions.startTransition(TRANSIT_CLOSE, wct, /* handler= */ null) runOnTransitStartList.forEach { runOnTransitStart -> runOnTransitStart(transition) } } private fun removeDesk(displayId: Int, deskId: Int, userId: Int, exitReason: ExitReason) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +46 −1 Original line number Diff line number Diff line Loading @@ -7897,6 +7897,51 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() verify(recentTasksController).removeBackgroundTask(task3.taskId) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, ) fun removeAllDesks_multipleDesks_removesAllInSingleTransition() { val transition = Binder() whenever(transitions.startTransition(eq(TRANSIT_CLOSE), any(), anyOrNull())) .thenReturn(transition) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 4) taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 5) controller.removeAllDesks( userId = taskRepository.userId, exitReason = ExitReason.UNKNOWN_EXIT, ) verify(transitions).startTransition(eq(TRANSIT_CLOSE), any(), anyOrNull()) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 3 } ) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 4 } ) verify(desksTransitionsObserver) .addPendingTransition( argThat { this is DeskTransition.RemoveDesk && this.token == transition && this.deskId == 5 } ) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION, Loading