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

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

Merge "DesktopMixed: Early out instead of throwing, when no launch Change" into main

parents 2c4f6de1 2b3b627b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -205,6 +205,11 @@ class DesktopMixedTransitionHandler(
        finishTransaction: SurfaceControl.Transaction,
        finishCallback: TransitionFinishCallback,
    ): Boolean {
        val launchChange = findDesktopTaskChange(info, pending.launchingTask)
        if (launchChange == null) {
            logV("No launch Change, returning")
            return false
        }
        // Check if there's also an immersive change during this launch.
        val immersiveExitChange = pending.exitingImmersiveTask?.let { exitingTask ->
            findDesktopTaskChange(info, exitingTask)
@@ -212,8 +217,6 @@ class DesktopMixedTransitionHandler(
        val minimizeChange = pending.minimizingTask?.let { minimizingTask ->
            findDesktopTaskChange(info, minimizingTask)
        }
        val launchChange = findDesktopTaskChange(info, pending.launchingTask)
            ?: error("Should have pending launching task change")

        var subAnimationCount = -1
        var combinedWct: WindowContainerTransaction? = null
+31 −0
Original line number Diff line number Diff line
@@ -445,6 +445,37 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
            anyInt(), eq(minimizeChange.leash), any())
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS)
    fun startAnimation_pendingTransition_noLaunchChange_returnsFalse() {
        val wct = WindowContainerTransaction()
        val launchingTask = createTask(WINDOWING_MODE_FREEFORM)
        val nonLaunchTaskChange = createChange(createTask(WINDOWING_MODE_FREEFORM))
        val transition = Binder()
        whenever(transitions.startTransition(eq(TRANSIT_OPEN), eq(wct), anyOrNull()))
            .thenReturn(transition)
        mixedHandler.addPendingMixedTransition(
            PendingMixedTransition.Launch(
                transition = transition,
                launchingTask = launchingTask.taskId,
                minimizingTask = null,
                exitingImmersiveTask = null,
            )
        )

        val started = mixedHandler.startAnimation(
            transition,
            createTransitionInfo(
                TRANSIT_OPEN,
                listOf(nonLaunchTaskChange)
            ),
            SurfaceControl.Transaction(),
            SurfaceControl.Transaction(),
        ) { }

        assertFalse("Should not start animation without launching desktop task", started)
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS)
    fun addPendingAndAnimateLaunchTransition_noMinimizeChange_doesNotReparentMinimizeChange() {