Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +5 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt +31 −0 Original line number Diff line number Diff line Loading @@ -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() { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +5 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt +31 −0 Original line number Diff line number Diff line Loading @@ -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() { Loading