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

Commit 22fcd609 authored by Sergey Pinkevich's avatar Sergey Pinkevich Committed by Android (Google) Code Review
Browse files

Merge "Reparenting task in DesktopMixedTransitionHandler for minimize change" into main

parents 0ee5f028 6aaf2855
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -452,6 +452,11 @@ class DesktopMixedTransitionHandler(
    private fun findTaskChange(info: TransitionInfo, taskId: Int): TransitionInfo.Change? =
        info.changes.firstOrNull { change -> change.taskInfo?.taskId == taskId }

    private fun findLaunchChange(info: TransitionInfo): TransitionInfo.Change? =
        info.changes.firstOrNull { change ->
            change.mode == TRANSIT_OPEN && change.taskInfo != null && change.taskInfo!!.isFreeform
        }

    private fun findDesktopTaskLaunchChange(
        info: TransitionInfo,
        launchTaskId: Int?,
@@ -459,14 +464,18 @@ class DesktopMixedTransitionHandler(
        return if (launchTaskId != null) {
            // Launching a known task (probably from background or moving to front), so
            // specifically look for it.
            findTaskChange(info, launchTaskId)
            val launchChange = findTaskChange(info, launchTaskId)
            if (
                DesktopModeFlags.ENABLE_DESKTOP_OPENING_DEEPLINK_MINIMIZE_ANIMATION_BUGFIX.isTrue &&
                    launchChange == null
            ) {
                findLaunchChange(info)
            } else {
            // Launching a new task, so the first opening freeform task.
            info.changes.firstOrNull { change ->
                change.mode == TRANSIT_OPEN &&
                    change.taskInfo != null &&
                    change.taskInfo!!.isFreeform
                launchChange
            }
        } else {
            // Launching a new task, so the first opening freeform task.
            findLaunchChange(info)
        }
    }

+32 −0
Original line number Diff line number Diff line
@@ -430,6 +430,38 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
            .reparentToDisplayArea(anyInt(), eq(minimizeChange.leash), any())
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX,
        Flags.FLAG_ENABLE_DESKTOP_OPENING_DEEPLINK_MINIMIZE_ANIMATION_BUGFIX,
    )
    fun startAndAnimateLaunchTransition_withMinimizeChange_wrongTaskId_reparentsMinimizeChange() {
        val wct = WindowContainerTransaction()
        val launchingTask = createTask(WINDOWING_MODE_FREEFORM)
        val minimizingTask = createTask(WINDOWING_MODE_FREEFORM)
        val launchTaskChange = createChange(launchingTask, mode = TRANSIT_OPEN)
        val minimizeChange = createChange(minimizingTask)
        val transition = Binder()
        whenever(transitions.startTransition(eq(TRANSIT_OPEN), eq(wct), anyOrNull()))
            .thenReturn(transition)

        mixedHandler.startLaunchTransition(
            transitionType = TRANSIT_OPEN,
            wct = wct,
            taskId = Int.MAX_VALUE,
            minimizingTaskId = minimizingTask.taskId,
        )
        mixedHandler.startAnimation(
            transition,
            createCloseTransitionInfo(TRANSIT_OPEN, listOf(launchTaskChange, minimizeChange)),
            SurfaceControl.Transaction(),
            SurfaceControl.Transaction(),
        ) {}

        verify(rootTaskDisplayAreaOrganizer)
            .reparentToDisplayArea(anyInt(), eq(minimizeChange.leash), any())
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX)
    fun startAnimation_pendingTransition_noLaunchChange_returnsFalse() {