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

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

Merge "Use task's displayId in moveToBackground flows" into main

parents c3a5a681 16b23c4f
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -472,15 +472,14 @@ class DesktopTasksController(
        remoteTransition: RemoteTransition? = null,
        callback: IMoveToDesktopCallback? = null,
    ): Boolean {
        val runningTask = shellTaskOrganizer.getRunningTaskInfo(taskId)
        val backgroundTask = recentTasksController?.findTaskInBackground(taskId)
        if (runningTask == null && backgroundTask == null) {
        val task =
            shellTaskOrganizer.getRunningTaskInfo(taskId)
                ?: recentTasksController?.findTaskInBackground(taskId)
        if (task == null) {
            logW("moveTaskToDefaultDeskAndActivate taskId=%d not found", taskId)
            return false
        }
        // TODO(342378842): Instead of using default display, support multiple displays
        val displayId = runningTask?.displayId ?: DEFAULT_DISPLAY
        val deskId = getDefaultDeskId(displayId)
        val deskId = getDefaultDeskId(task.displayId)
        return moveTaskToDesk(
            taskId = taskId,
            deskId = deskId,
@@ -532,14 +531,14 @@ class DesktopTasksController(
        remoteTransition: RemoteTransition? = null,
        callback: IMoveToDesktopCallback? = null,
    ): Boolean {
        if (recentTasksController?.findTaskInBackground(taskId) == null) {
        val task = recentTasksController?.findTaskInBackground(taskId)
        if (task == null) {
            logW("moveBackgroundTaskToDesktop taskId=%d not found", taskId)
            return false
        }
        logV("moveBackgroundTaskToDesktop with taskId=%d", taskId)
        // TODO(342378842): Instead of using default display, support multiple displays
        val taskIdToMinimize =
            bringDesktopAppsToFrontBeforeShowingNewTask(DEFAULT_DISPLAY, wct, taskId)
            bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, taskId)
        val exitResult =
            desktopImmersiveController.exitImmersiveIfApplicable(
                wct = wct,
+37 −8
Original line number Diff line number Diff line
@@ -1616,7 +1616,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Test
    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
    fun moveTaskToDesktop_desktopWallpaperDisabled_nonRunningTask_launchesInFreeform() {
        val task = createTaskInfo(1)
        val task = createRecentTaskInfo(1)
        whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
        whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)

@@ -1631,7 +1631,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
    fun moveTaskToDesktop_desktopWallpaperEnabled_nonRunningTask_launchesInFreeform() {
        whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
        val task = createTaskInfo(1)
        val task = createRecentTaskInfo(1)
        whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
        whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)

@@ -1803,7 +1803,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture()))
            .thenReturn(Binder())

        val task = createTaskInfo(1)
        val task = createRecentTaskInfo(1)
        whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
        whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
        controller.moveTaskToDefaultDeskAndActivate(
@@ -1817,6 +1817,34 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        assertIs<OneShotRemoteHandler>(transitionHandlerArgCaptor.firstValue)
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
        Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY,
        Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER,
    )
    fun moveBackgroundTaskToDesktop_nonDefaultDisplay_reordersHomeAndWallpaperOfNonDefaultDisplay() {
        val homeTask = setUpHomeTask(displayId = SECOND_DISPLAY)
        val wallpaperToken = MockToken().token()
        whenever(desktopWallpaperActivityTokenProvider.getToken(SECOND_DISPLAY))
            .thenReturn(wallpaperToken)
        val task = setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = 2, background = true)

        controller.moveTaskToDefaultDeskAndActivate(
            taskId = task.taskId,
            transitionSource = UNKNOWN,
            remoteTransition = RemoteTransition(spy(TestRemoteTransition())),
        )

        val wct = getLatestTransition()
        val homeReorderIndex = wct.indexOfReorder(homeTask, toTop = true)
        val wallpaperReorderIndex = wct.indexOfReorder(wallpaperToken, toTop = true)
        assertThat(homeReorderIndex).isNotEqualTo(-1)
        assertThat(wallpaperReorderIndex).isNotEqualTo(-1)
        // Wallpaper last, to be in front of Home.
        assertThat(wallpaperReorderIndex).isGreaterThan(homeReorderIndex)
    }

    @Test
    fun moveRunningTaskToDesktop_remoteTransition_usesOneShotHandler() {
        val transitionHandlerArgCaptor = argumentCaptor<TransitionHandler>()
@@ -2468,7 +2496,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()

    @Test
    fun moveTaskToFront_backgroundTask_launchesTask() {
        val task = createTaskInfo(1)
        val task = createRecentTaskInfo(1)
        whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
        whenever(
                desktopMixedTransitionHandler.startLaunchTransition(
@@ -2490,7 +2518,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Test
    fun moveTaskToFront_backgroundTaskBringsTasksOverLimit_minimizesBackTask() {
        val freeformTasks = (1..MAX_TASK_LIMIT).map { _ -> setUpFreeformTask() }
        val task = createTaskInfo(1001)
        val task = createRecentTaskInfo(1001)
        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null)
        whenever(
                desktopMixedTransitionHandler.startLaunchTransition(
@@ -6716,7 +6744,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        if (background) {
            whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null)
            whenever(recentTasksController.findTaskInBackground(task.taskId))
                .thenReturn(createTaskInfo(task.taskId))
                .thenReturn(createRecentTaskInfo(taskId = task.taskId, displayId = displayId))
        } else {
            whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
        }
@@ -7151,8 +7179,9 @@ private fun WindowContainerTransaction?.anyWindowingModeChange(
    } ?: false
}

private fun createTaskInfo(id: Int) =
private fun createRecentTaskInfo(taskId: Int, displayId: Int = DEFAULT_DISPLAY) =
    RecentTaskInfo().apply {
        taskId = id
        this.taskId = taskId
        this.displayId = displayId
        token = WindowContainerToken(mock(IWindowContainerToken::class.java))
    }