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