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

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

Merge "Remove all the closing tasks." into main

parents 8959c7cf a5b191a9
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -185,29 +185,30 @@ class DesktopTasksTransitionObserver(
        // because for closing tasks we first need to check whether it's because of back navigation
        // so that we can minimize it if needed.
        val info = closingTransitionToTransitionInfo.remove(transition) ?: return
        removeClosingTask(info)
        removeClosingTasks(info)
    }

    /** Finds the closing task in the change and removes it full by a [TRANSIT_CLOSE] transition. */
    private fun removeClosingTask(info: TransitionInfo) {
        val task =
    /**
     * Finds the closing tasks in the change and removes them full by a [TRANSIT_CLOSE] transition.
     */
    private fun removeClosingTasks(info: TransitionInfo) {
        val wct = WindowContainerTransaction()
        info.changes
                .find { change -> change.mode == TRANSIT_CLOSE && change.taskInfo != null }
                ?.taskInfo ?: return

        transitions.startTransition(
            TRANSIT_CLOSE,
            WindowContainerTransaction().removeTask(task.token),
            null,
        )

            .filter { it.mode == TRANSIT_CLOSE }
            .mapNotNull { it.taskInfo }
            .forEach { taskInfo ->
                if (taskInfo.windowingMode != WINDOWING_MODE_FREEFORM) return@forEach
                wct.removeTask(taskInfo.token)
                ProtoLog.d(
                    WM_SHELL_DESKTOP_MODE,
                    "DesktopTasksTransitionObserver: removing closing task=%d fully",
            task.taskId,
                    taskInfo.taskId,
                )
            }

        if (!wct.isEmpty) transitions.startTransition(TRANSIT_CLOSE, wct, null)
    }

    private fun updateWallpaperToken(info: TransitionInfo) {
        if (!ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY.isTrue()) {
            return
+20 −16
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {

        transitionObserver.onTransitionReady(
            transition = mockTransition,
            info = createCloseTransition(task),
            info = createCloseTransition(listOf(task)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
@@ -143,7 +143,7 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {

        transitionObserver.onTransitionReady(
            transition = mockTransition,
            info = createCloseTransition(topTransparentTask),
            info = createCloseTransition(listOf(topTransparentTask)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
@@ -240,7 +240,7 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {

        transitionObserver.onTransitionReady(
            transition = mock(),
            info = createCloseTransition(wallpaperTask),
            info = createCloseTransition(listOf(wallpaperTask)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
@@ -265,7 +265,7 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {

        transitionObserver.onTransitionReady(
            transition = mockTransition,
            info = createCloseTransition(topTransparentTask),
            info = createCloseTransition(listOf(topTransparentTask)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
@@ -281,20 +281,22 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {
    fun closingTask_startsTransitionToRemoveFully() {
        val mockTransition = Mockito.mock(IBinder::class.java)
        val freeformTask = createTaskInfo(1)
        val freeformTask2 = createTaskInfo(2)
        whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true)
        whenever(mixedHandler.hasTransition(mockTransition)).thenReturn(false)

        transitionObserver.onTransitionReady(
            transition = mockTransition,
            info = createCloseTransition(freeformTask),
            info = createCloseTransition(listOf(freeformTask, freeformTask2)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
        transitionObserver.onTransitionFinished(transition = mockTransition, aborted = false)

        val wct = getLatestWct(type = TRANSIT_CLOSE)
        assertThat(wct.hierarchyOps).hasSize(1)
        assertThat(wct.hierarchyOps).hasSize(2)
        wct.assertRemoveAt(index = 0, freeformTask.token)
        wct.assertRemoveAt(index = 1, freeformTask2.token)
    }

    @Test
@@ -313,7 +315,7 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {

        transitionObserver.onTransitionReady(
            transition = mockTransition,
            info = createCloseTransition(topTransparentTask),
            info = createCloseTransition(listOf(topTransparentTask)),
            startTransaction = mock(),
            finishTransaction = mock(),
        )
@@ -368,17 +370,19 @@ class DesktopTasksTransitionObserverTest : ShellTestCase() {
        }
    }

    private fun createCloseTransition(task: RunningTaskInfo?) =
    private fun createCloseTransition(tasks: List<RunningTaskInfo?>) =
        TransitionInfo(TRANSIT_CLOSE, /* flags= */ 0).apply {
            tasks.forEach {
                addChange(
                    Change(mock(), mock()).apply {
                        mode = TRANSIT_CLOSE
                        parent = null
                    taskInfo = task
                        taskInfo = it
                        flags = flags
                    }
                )
            }
        }

    private fun createToBackTransition(task: RunningTaskInfo?) =
        TransitionInfo(TRANSIT_TO_BACK, /* flags= */ 0).apply {