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

Commit 5ac00d0c authored by Orhan Uysal's avatar Orhan Uysal
Browse files

Move home task under the fullscreen task...

when moving to fullscreen so that using back navigation results in user
ending up in home rather than desktop. It doesn't reorder home behind
the task for freeform by default displays.

Bug: 392621916
Test: Manual & atest DesktopTasksController
Flag: EXEMPT Bugfix
Change-Id: I52be442e8dd050950e1f89e9c3e4580cd0150366
parent 8dd4d541
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -734,6 +734,12 @@ class DesktopTasksController(
        val wct = WindowContainerTransaction()
        addMoveToFullscreenChanges(wct, task)

        // We are moving a freeform task to fullscreen, put the home task under the fullscreen task.
        if (!forceEnterDesktop(task.displayId)) {
            moveHomeTask(wct, toTop = true, task.displayId)
            wct.reorder(task.token, /* onTop= */ true)
        }

        exitDesktopTaskTransitionHandler.startTransition(
            transitionSource,
            wct,
+42 −4
Original line number Diff line number Diff line
@@ -1586,6 +1586,8 @@ class DesktopTasksControllerTest : ShellTestCase() {
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER)
    fun moveToFullscreen_tdaFullscreen_windowingModeUndefined_removesWallpaperActivity() {
        whenever(DesktopModeStatus.enterDesktopByDefaultOnFreeformDisplay(context)).thenReturn(true)
        val homeTask = setUpHomeTask()
        val task = setUpFreeformTask()
        assertNotNull(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY))
            .configuration
@@ -1599,9 +1601,33 @@ class DesktopTasksControllerTest : ShellTestCase() {
        verify(desktopModeEnterExitTransitionListener)
            .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION)
        assertThat(taskChange.windowingMode).isEqualTo(WINDOWING_MODE_UNDEFINED)
        assertThat(wct.hierarchyOps).hasSize(1)
        assertThat(wct.hierarchyOps).hasSize(3)
        // Removes wallpaper activity when leaving desktop
        wct.assertReorderAt(index = 0, wallpaperToken, toTop = false)
        // Moves home task behind the fullscreen task
        wct.assertReorderAt(index = 1, homeTask.getToken(), toTop = true)
        wct.assertReorderAt(index = 2, task.getToken(), toTop = true)
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER)
    fun moveToFullscreen_tdaFreeform_enforcedDesktop_doesNotReorderHome() {
        whenever(DesktopModeStatus.enterDesktopByDefaultOnFreeformDisplay(context)).thenReturn(true)
        val homeTask = setUpHomeTask()
        val task = setUpFreeformTask()
        assertNotNull(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY))
            .configuration
            .windowConfiguration
            .windowingMode = WINDOWING_MODE_FREEFORM

        controller.moveToFullscreen(task.taskId, transitionSource = UNKNOWN)

        val wct = getLatestExitDesktopWct()
        verify(desktopModeEnterExitTransitionListener)
            .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION)
        assertThat(wct.hierarchyOps).hasSize(1)
        // Removes wallpaper activity when leaving desktop but doesn't reorder home or the task
        wct.assertReorderAt(index = 0, wallpaperToken, toTop = false)
    }

    @Test
@@ -1620,6 +1646,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER)
    fun moveToFullscreen_tdaFreeform_windowingModeFullscreen_removesWallpaperActivity() {
        val homeTask = setUpHomeTask()
        val task = setUpFreeformTask()

        assertNotNull(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY))
@@ -1634,13 +1661,17 @@ class DesktopTasksControllerTest : ShellTestCase() {
        assertThat(taskChange.windowingMode).isEqualTo(WINDOWING_MODE_FULLSCREEN)
        verify(desktopModeEnterExitTransitionListener)
            .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION)
        assertThat(wct.hierarchyOps).hasSize(1)
        assertThat(wct.hierarchyOps).hasSize(3)
        // Removes wallpaper activity when leaving desktop
        wct.assertReorderAt(index = 0, wallpaperToken, toTop = false)
        // Moves home task behind the fullscreen task
        wct.assertReorderAt(index = 1, homeTask.getToken(), toTop = true)
        wct.assertReorderAt(index = 2, task.getToken(), toTop = true)
    }

    @Test
    fun moveToFullscreen_multipleVisibleNonMinimizedTasks_doesNotRemoveWallpaperActivity() {
        val homeTask = setUpHomeTask()
        val task1 = setUpFreeformTask()
        // Setup task2
        setUpFreeformTask()
@@ -1658,7 +1689,10 @@ class DesktopTasksControllerTest : ShellTestCase() {
        verify(desktopModeEnterExitTransitionListener)
            .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION)
        // Does not remove wallpaper activity, as desktop still has a visible desktop task
        assertThat(wct.hierarchyOps).isEmpty()
        assertThat(wct.hierarchyOps).hasSize(2)
        // Moves home task behind the fullscreen task
        wct.assertReorderAt(index = 0, homeTask.getToken(), toTop = true)
        wct.assertReorderAt(index = 1, task1.getToken(), toTop = true)
    }

    @Test
@@ -3353,6 +3387,7 @@ class DesktopTasksControllerTest : ShellTestCase() {

    @Test
    fun moveFocusedTaskToFullscreen_multipleVisibleTasks_doesNotRemoveWallpaperActivity() {
        val homeTask = setUpHomeTask()
        val task1 = setUpFreeformTask()
        val task2 = setUpFreeformTask()
        val task3 = setUpFreeformTask()
@@ -3367,7 +3402,10 @@ class DesktopTasksControllerTest : ShellTestCase() {
        assertThat(taskChange.windowingMode)
            .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN
        // Does not remove wallpaper activity, as desktop still has visible desktop tasks
        assertThat(wct.hierarchyOps).isEmpty()
        assertThat(wct.hierarchyOps).hasSize(2)
        // Moves home task behind the fullscreen task
        wct.assertReorderAt(index = 0, homeTask.getToken(), toTop = true)
        wct.assertReorderAt(index = 1, task2.getToken(), toTop = true)
    }

    @Test