Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 965ccff5 authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge changes I59118692,Ie68b64a7 into main

* changes:
  Desks: Use a single transition to remove all desks
  Implement removeAllDesks adb command
parents f4b80367 f05486cb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
    }

+17 −3
Original line number Diff line number Diff line
@@ -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) {
+46 −1
Original line number Diff line number Diff line
@@ -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,