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

Commit 60959866 authored by Matt Sziklay's avatar Matt Sziklay Committed by Android (Google) Code Review
Browse files

Merge "Check for desk root in getFocusedNonDesktopTasks." into main

parents 9955a881 20ec8a26
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -456,15 +456,16 @@ class DesktopTasksController(
    }

    /**
     * Returns all focused tasks in full screen or split screen mode in [displayId] when it is not
     * the home activity.
     * Returns all focused tasks in full screen or split screen mode in [displayId] excluding home
     * activity and desk roots.
     */
    private fun getFocusedNonDesktopTasks(displayId: Int): List<RunningTaskInfo> =
        shellTaskOrganizer.getRunningTasks(displayId).filter { taskInfo ->
            val focused = taskInfo.isFocused
            val isNotDesktop =
                if (DesktopExperienceFlags.EXCLUDE_DESK_ROOTS_FROM_DESKTOP_TASKS.isTrue) {
                    !taskRepository.isActiveTask(taskInfo.taskId)
                    !taskRepository.isActiveTask(taskInfo.taskId) &&
                        !taskRepository.getAllDeskIds().contains(taskInfo.taskId)
                } else {
                    taskInfo.windowingMode == WINDOWING_MODE_FULLSCREEN ||
                        taskInfo.windowingMode == WINDOWING_MODE_MULTI_WINDOW
+54 −6
Original line number Diff line number Diff line
@@ -9726,11 +9726,35 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_MINIMIZE_ANIMATION_BUGFIX,
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_LAUNCH_ANIMATION,
        Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
    )
    fun onUnhandledDrag_crossDisplayDrag() {
    fun onUnhandledDrag_crossDisplayDrag_succeedsOnFocusedFreeformTask() {
        taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
        taskRepository.setActiveDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
        setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = 2)
        setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = 2).apply { isFocused = true }
        testOnUnhandledDrag(
            DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR,
            PointF(1200f, 700f),
            Rect(240, 700, 2160, 1900),
            tabTearingMinimizeAnimationFlagEnabled = true,
            tabTearingLaunchAnimationFlagEnabled = true,
            destinationDisplayId = SECOND_DISPLAY,
        )
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_MINIMIZE_ANIMATION_BUGFIX,
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_LAUNCH_ANIMATION,
        Flags.FLAG_EXCLUDE_DESK_ROOTS_FROM_DESKTOP_TASKS,
        Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
    )
    fun onUnhandledDrag_crossDisplayDrag_succeedsOnFocusedDeskRoot() {
        val task = createFreeformTask(displayId = SECOND_DISPLAY).apply { isFocused = true }
        runningTasks.add(task)
        whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task)
        taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = task.taskId)
        taskRepository.setActiveDesk(displayId = SECOND_DISPLAY, deskId = task.taskId)
        testOnUnhandledDrag(
            DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR,
            PointF(1200f, 700f),
@@ -9741,6 +9765,27 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        )
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_MINIMIZE_ANIMATION_BUGFIX,
        Flags.FLAG_ENABLE_DESKTOP_TAB_TEARING_LAUNCH_ANIMATION,
        Flags.FLAG_EXCLUDE_DESK_ROOTS_FROM_DESKTOP_TASKS,
    )
    fun onUnhandledDrag_crossDisplayDrag_noOpOnFocusedNonDesktopTask() {
        taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
        taskRepository.setActiveDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
        setUpFullscreenTask(displayId = SECOND_DISPLAY).apply { isFocused = true }
        testOnUnhandledDrag(
            DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR,
            PointF(1200f, 700f),
            Rect(240, 700, 2160, 1900),
            tabTearingMinimizeAnimationFlagEnabled = true,
            tabTearingLaunchAnimationFlagEnabled = true,
            destinationDisplayId = SECOND_DISPLAY,
            verifyNoOp = true,
        )
    }

    @Test
    fun shellController_registersUserChangeListener() {
        verify(shellController, times(2)).addUserChangeListener(any())
@@ -10807,6 +10852,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        tabTearingMinimizeAnimationFlagEnabled: Boolean,
        tabTearingLaunchAnimationFlagEnabled: Boolean,
        destinationDisplayId: Int = DEFAULT_DISPLAY,
        verifyNoOp: Boolean = false,
    ) {
        desktopState.overrideDesktopModeSupportPerDisplay[DEFAULT_DISPLAY] = true
        desktopState.overrideDesktopModeSupportPerDisplay[destinationDisplayId] = true
@@ -10860,16 +10906,17 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            mockDragEvent,
            mockCallback as Consumer<Boolean>,
        )
        val times = if (verifyNoOp) never() else times(1)
        val arg = argumentCaptor<WindowContainerTransaction>()
        var expectedWindowingMode: Int
        val expectedWindowingMode: Int
        if (indicatorType == DesktopModeVisualIndicator.IndicatorType.TO_FULLSCREEN_INDICATOR) {
            expectedWindowingMode = WINDOWING_MODE_FULLSCREEN
            // Fullscreen launches currently use default transitions
            verify(transitions).startTransition(any(), arg.capture(), anyOrNull())
            verify(transitions, times).startTransition(any(), arg.capture(), anyOrNull())
        } else {
            expectedWindowingMode = WINDOWING_MODE_FREEFORM
            if (tabTearingMinimizeAnimationFlagEnabled || tabTearingLaunchAnimationFlagEnabled) {
                verify(desktopMixedTransitionHandler)
                verify(desktopMixedTransitionHandler, times)
                    .startLaunchTransition(
                        eq(TRANSIT_OPEN),
                        arg.capture(),
@@ -10881,10 +10928,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
                    )
            } else {
                // All other launches use a special handler.
                verify(dragAndDropTransitionHandler)
                verify(dragAndDropTransitionHandler, times)
                    .handleDropEvent(arg.capture(), eq(mockDragEvent))
            }
        }
        if (verifyNoOp) return
        assertThat(
                ActivityOptions.fromBundle(arg.firstValue.hierarchyOps[0].launchOptions)
                    .launchWindowingMode