Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +7 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode import android.app.ActivityTaskManager.INVALID_TASK_ID import android.window.DesktopExperienceFlags import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.transition.FocusTransitionObserver Loading Loading @@ -188,8 +189,12 @@ class DesktopModeShellCommandHandler( pw.println("Error: task id should be an integer") return false } pw.println("Not implemented.") return false controller.moveTaskToFront( /* taskId= */ taskId, /* remoteTransition= */ null, /* unminimizeReason= */ UnminimizeReason.UNKNOWN, ) return true } private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean { Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +19 −23 Original line number Diff line number Diff line Loading @@ -1121,12 +1121,13 @@ class DesktopTasksController( excludeTaskId = launchingTaskId, reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH, ) var deskIdToActivate: Int? = null if ( DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue && var activationRunOnTransitStart: RunOnTransitStart? = null val shouldActivateDesk = (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue || DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) && !isDesktopModeShowing(displayId) ) { deskIdToActivate = if (shouldActivateDesk) { val deskIdToActivate = checkNotNull( launchingTaskId?.let { taskRepository.getDeskIdForTask(it) } ?: getDefaultDeskId(displayId) Loading @@ -1136,6 +1137,18 @@ class DesktopTasksController( // Desk activation must be handled before app launch-related transactions. activateDeskWct.merge(launchTransaction, /* transfer= */ true) launchTransaction = activateDeskWct activationRunOnTransitStart = { transition -> desksTransitionObserver.addPendingTransition( DeskTransition.ActivateDesk( token = transition, displayId = displayId, deskId = deskIdToActivate, ) ) } desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( FREEFORM_ANIMATION_DURATION ) } val t = if (remoteTransition == null) { Loading Loading @@ -1169,24 +1182,7 @@ class DesktopTasksController( if (launchingTaskId != null && taskRepository.isMinimizedTask(launchingTaskId)) { addPendingUnminimizeTransition(t, displayId, launchingTaskId, unminimizeReason) } if ( DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && deskIdToActivate != null ) { if (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) { desksTransitionObserver.addPendingTransition( DeskTransition.ActivateDesk( token = t, displayId = displayId, deskId = deskIdToActivate, ) ) } desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( FREEFORM_ANIMATION_DURATION ) } activationRunOnTransitStart?.invoke(t) exitImmersiveResult.asExit()?.runOnTransitionStart?.invoke(t) return t } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +29 −0 Original line number Diff line number Diff line Loading @@ -334,6 +334,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenAnswer { Binder() } whenever(exitDesktopTransitionHandler.startTransition(any(), any(), any(), any())) .thenReturn(Binder()) whenever( desktopMixedTransitionHandler.startLaunchTransition( any(), any(), anyOrNull(), anyOrNull(), anyOrNull(), ) ) .thenReturn(Binder()) whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout) whenever(displayController.getDisplayContext(anyInt())).thenReturn(mockDisplayContext) whenever(displayController.getDisplay(anyInt())).thenReturn(display) Loading Loading @@ -6572,6 +6582,25 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() assertThat(launchingTaskReorderIndex).isGreaterThan(wallpaperReorderIndex) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, ) fun startLaunchTransition_desktopNotShowing_updatesDesktopEnterExitListener() { setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0) taskRepository.setDeskInactive(deskId = 0) controller.startLaunchTransition( transitionType = TRANSIT_OPEN, wct = WindowContainerTransaction(), launchingTaskId = null, ) verify(desktopModeEnterExitTransitionListener).onEnterDesktopModeTransitionStarted(any()) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +7 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode import android.app.ActivityTaskManager.INVALID_TASK_ID import android.window.DesktopExperienceFlags import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.transition.FocusTransitionObserver Loading Loading @@ -188,8 +189,12 @@ class DesktopModeShellCommandHandler( pw.println("Error: task id should be an integer") return false } pw.println("Not implemented.") return false controller.moveTaskToFront( /* taskId= */ taskId, /* remoteTransition= */ null, /* unminimizeReason= */ UnminimizeReason.UNKNOWN, ) return true } private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +19 −23 Original line number Diff line number Diff line Loading @@ -1121,12 +1121,13 @@ class DesktopTasksController( excludeTaskId = launchingTaskId, reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH, ) var deskIdToActivate: Int? = null if ( DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue && var activationRunOnTransitStart: RunOnTransitStart? = null val shouldActivateDesk = (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue || DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) && !isDesktopModeShowing(displayId) ) { deskIdToActivate = if (shouldActivateDesk) { val deskIdToActivate = checkNotNull( launchingTaskId?.let { taskRepository.getDeskIdForTask(it) } ?: getDefaultDeskId(displayId) Loading @@ -1136,6 +1137,18 @@ class DesktopTasksController( // Desk activation must be handled before app launch-related transactions. activateDeskWct.merge(launchTransaction, /* transfer= */ true) launchTransaction = activateDeskWct activationRunOnTransitStart = { transition -> desksTransitionObserver.addPendingTransition( DeskTransition.ActivateDesk( token = transition, displayId = displayId, deskId = deskIdToActivate, ) ) } desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( FREEFORM_ANIMATION_DURATION ) } val t = if (remoteTransition == null) { Loading Loading @@ -1169,24 +1182,7 @@ class DesktopTasksController( if (launchingTaskId != null && taskRepository.isMinimizedTask(launchingTaskId)) { addPendingUnminimizeTransition(t, displayId, launchingTaskId, unminimizeReason) } if ( DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && deskIdToActivate != null ) { if (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) { desksTransitionObserver.addPendingTransition( DeskTransition.ActivateDesk( token = t, displayId = displayId, deskId = deskIdToActivate, ) ) } desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( FREEFORM_ANIMATION_DURATION ) } activationRunOnTransitStart?.invoke(t) exitImmersiveResult.asExit()?.runOnTransitionStart?.invoke(t) return t } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +29 −0 Original line number Diff line number Diff line Loading @@ -334,6 +334,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenAnswer { Binder() } whenever(exitDesktopTransitionHandler.startTransition(any(), any(), any(), any())) .thenReturn(Binder()) whenever( desktopMixedTransitionHandler.startLaunchTransition( any(), any(), anyOrNull(), anyOrNull(), anyOrNull(), ) ) .thenReturn(Binder()) whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout) whenever(displayController.getDisplayContext(anyInt())).thenReturn(mockDisplayContext) whenever(displayController.getDisplay(anyInt())).thenReturn(display) Loading Loading @@ -6572,6 +6582,25 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() assertThat(launchingTaskReorderIndex).isGreaterThan(wallpaperReorderIndex) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, ) fun startLaunchTransition_desktopNotShowing_updatesDesktopEnterExitListener() { setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0) taskRepository.setDeskInactive(deskId = 0) controller.startLaunchTransition( transitionType = TRANSIT_OPEN, wct = WindowContainerTransaction(), launchingTaskId = null, ) verify(desktopModeEnterExitTransitionListener).onEnterDesktopModeTransitionStarted(any()) } @Test @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, Loading