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

Commit 058a35fa authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Prevent minimize animation on desk switch" into main

parents b511d54b 307d9ee9
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -2333,6 +2333,7 @@ class DesktopTasksController(
                    wct = activateDeskWct,
                    userId = userId,
                    enterReason = EnterReason.APP_FREEFORM_INTENT,
                    isDeskSwitch = repository.isAnyDeskActive(displayId),
                )
            // Desk activation must be handled before app launch-related transactions.
            activateDeskWct.merge(launchTransaction, /* transfer= */ true)
@@ -4965,8 +4966,15 @@ class DesktopTasksController(
    private fun getTaskIdToMinimize(
        expandedTasksOrderedFrontToBack: List<Int>,
        newTaskIdInFront: Int?,
        isDeskSwitch: Boolean = false,
    ): Int? {
        if (DesktopExperienceFlags.ENABLE_DESKTOP_TASK_LIMIT_SEPARATE_TRANSITION.isTrue) return null
        // If it's a desk switch, include the minimized task in the same transition. So when the
        // user switches the desks, the new desk has the correct task minimized already.
        if (
            DesktopExperienceFlags.ENABLE_DESKTOP_TASK_LIMIT_SEPARATE_TRANSITION.isTrue &&
                !isDeskSwitch
        )
            return null
        val limiter = desktopTasksLimiter.getOrNull() ?: return null
        return limiter.getTaskIdToMinimize(expandedTasksOrderedFrontToBack, newTaskIdInFront)
    }
@@ -5074,6 +5082,7 @@ class DesktopTasksController(
        switchingUser: Boolean = false,
        displayId: Int = userRepositories.getProfile(userId).getDisplayForDesk(deskId),
        enterReason: EnterReason,
        isDeskSwitch: Boolean = false,
    ): RunOnTransitStart {
        val repository = userRepositories.getProfile(userId)
        val newTaskIdInFront = newTask?.taskId
@@ -5129,7 +5138,7 @@ class DesktopTasksController(
        // If we're adding a new Task we might need to minimize an old one
        // TODO: b/32994943 - remove dead code when cleaning up task_limit_separate_transition flag
        val taskIdToMinimize =
            getTaskIdToMinimize(expandedTasksOrderedFrontToBack, newTaskIdInFront)
            getTaskIdToMinimize(expandedTasksOrderedFrontToBack, newTaskIdInFront, isDeskSwitch)
        if (taskIdToMinimize != null) {
            val taskToMinimize = shellTaskOrganizer.getRunningTaskInfo(taskIdToMinimize)
            // TODO(b/365725441): Handle non running task minimization
+12 −1
Original line number Diff line number Diff line
@@ -273,7 +273,18 @@ class DesktopTasksLimiter(
            val taskChange =
                info.changes.find { change -> change.taskInfo?.taskId == taskDetails.taskId }
            val taskRepository = desktopUserRepositories.current
            if (taskChange == null) return !taskRepository.isVisibleTask(taskDetails.taskId)
            if (taskChange == null) {
                if (!taskRepository.isVisibleTask(taskDetails.taskId)) {
                    return true
                }
                // if the task is expanded on the desk but not wm visible, we can still mark it as
                // minimized.
                if (taskRepository.isActiveTask(taskDetails.taskId)) {
                    val taskInfo = shellTaskOrganizer.getRunningTaskInfo(taskDetails.taskId)
                    return taskInfo?.isVisible == false
                }
                return false
            }
            return taskChange.mode == TRANSIT_TO_BACK
        }

+17 −1
Original line number Diff line number Diff line
@@ -235,13 +235,29 @@ class DesktopTasksLimiterTest : ShellTestCase() {
    }

    @Test
    fun onTransitionReady_pendingTransition_noTaskChange_taskVisible_taskIsNotMinimized() {
    fun onTransitionReady_pendingTransition_noTaskChange_taskVis_wmInvis_taskIsMinimized() {
        desktopTaskRepo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
        desktopTaskRepo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
        val transition = Binder()
        val task = setUpFreeformTask()
        markTaskVisible(task)
        addPendingMinimizeChange(transition, taskId = task.taskId)
        task.isVisible = false

        callOnTransitionReady(transition, TransitionInfoBuilder(TRANSIT_OPEN).build())

        assertThat(desktopTaskRepo.isMinimizedTask(taskId = task.taskId)).isTrue()
    }

    @Test
    fun onTransitionReady_pendingTransition_noTaskChange_taskVis_wmVis_taskIsNotMinimized() {
        desktopTaskRepo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
        desktopTaskRepo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 0)
        val transition = Binder()
        val task = setUpFreeformTask()
        markTaskVisible(task)
        addPendingMinimizeChange(transition, taskId = task.taskId)
        task.isVisible = true

        callOnTransitionReady(transition, TransitionInfoBuilder(TRANSIT_OPEN).build())