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

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

Merge "Only prevent removing minimized tasks." into main

parents d04cd381 bfbc3bee
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -139,18 +139,22 @@ class DesktopTaskChangeListener(
        val desktopRepository: DesktopRepository =
            desktopUserRepositories.getProfile(taskInfo.userId)
        if (!desktopRepository.isActiveTask(taskInfo.taskId)) return

        val isMinimized = desktopRepository.isMinimizedTask(taskInfo.taskId)
        // TODO: b/370038902 - Handle Activity#finishAndRemoveTask.
        if (
            !DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue ||
                desktopRepository.isClosingTask(taskInfo.taskId)
        ) {
            // A task that's vanishing should be removed:
            // - If it's closed by the X button which means it's marked as a closing task.
        if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue) {
            // A task that is closing might have been minimized previously by
            // [DesktopBackNavTransitionObserver]. If that's the case then do not remove it from
            // the repo.
            desktopRepository.removeClosingTask(taskInfo.taskId)
            if (isMinimized) {
                desktopRepository.updateTask(taskInfo.displayId, taskInfo.taskId, isVisible = false)
            } else {
                desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId)
            }
        } else {
            desktopRepository.updateTask(taskInfo.displayId, taskInfo.taskId, isVisible = false)
            desktopRepository.minimizeTask(taskInfo.displayId, taskInfo.taskId)
            desktopRepository.removeClosingTask(taskInfo.taskId)
            desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId)
        }
    }

+15 −3
Original line number Diff line number Diff line
@@ -235,16 +235,28 @@ class DesktopTaskChangeListenerTest : ShellTestCase() {

    @Test
    @EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
    fun onTaskClosing_backNavEnabled_nonClosingTask_minimizesTaskInRepo() {
    fun onTaskClosing_backNavEnabled_removedFromRepo() {
        val task = createFreeformTask().apply { isVisible = true }
        whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true)
        whenever(desktopUserRepositories.current.isClosingTask(task.taskId)).thenReturn(false)

        desktopTaskChangeListener.onTaskClosing(task)

        verify(desktopUserRepositories.current).removeTask(task.displayId, task.taskId)
    }

    @Test
    @EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
    fun onTaskClosing_backNavEnabled_minimizedTask_notRemovedFromRepo() {
        val task = createFreeformTask().apply { isVisible = true }
        whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true)
        whenever(desktopUserRepositories.current.isMinimizedTask(task.taskId)).thenReturn(true)

        desktopTaskChangeListener.onTaskClosing(task)

        verify(desktopUserRepositories.current)
            .updateTask(task.displayId, task.taskId, isVisible = false)
        verify(desktopUserRepositories.current).minimizeTask(task.displayId, task.taskId)
            .updateTask(task.displayId, task.taskId, /* isVisible= */ false)
        verify(desktopUserRepositories.current, never()).removeTask(task.displayId, task.taskId)
    }

    @Test