Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +9 −0 Original line number Diff line number Diff line Loading @@ -683,6 +683,15 @@ class DesktopTasksController( return false } val displayId = getDisplayIdForTaskOrDefault(task) if ( DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue && !desktopState.isDesktopModeSupportedOnDisplay(displayId) && transitionSource != DesktopModeTransitionSource.ADB_COMMAND && transitionSource != DesktopModeTransitionSource.APP_FROM_OVERVIEW ) { logW("moveTaskToDefaultDeskAndActivate display=$displayId does not support desk") return false } if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { val deskId = getOrCreateDefaultDeskId(displayId) ?: return false return moveTaskToDesk( Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +63 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,11 @@ import com.android.wm.shell.recents.RecentsTransitionStateListener import com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING import com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.ADB_COMMAND import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.APP_FROM_OVERVIEW import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.KEYBOARD_SHORTCUT import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.TASK_DRAG import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.shared.desktopmode.FakeDesktopConfig import com.android.wm.shell.shared.desktopmode.FakeDesktopState Loading Loading @@ -1615,6 +1620,64 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE) @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_displayNotSupported_withOverButtonOrAdb_movesToDesk() { val spyController = spy(controller) desktopState.overrideDesktopModeSupportPerDisplay[DEFAULT_DISPLAY] = false val task = setUpFullscreenTask() spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = ADB_COMMAND) verify(spyController, times(1)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(ADB_COMMAND), eq(null), eq(null)) clearInvocations(desksOrganizer) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = APP_FROM_OVERVIEW, ) verify(spyController, times(1)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(APP_FROM_OVERVIEW), eq(null), eq(null)) } @Test @EnableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE) @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_displayNotSupported_doesNothing() { val spyController = spy(controller) desktopState.overrideDesktopModeSupportPerDisplay[DEFAULT_DISPLAY] = false val task = setUpFullscreenTask() spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(UNKNOWN), eq(null), eq(null)) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = KEYBOARD_SHORTCUT, ) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(KEYBOARD_SHORTCUT), eq(null), eq(null)) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = APP_HANDLE_MENU_BUTTON, ) verify(spyController, times(0)) .moveTaskToDesk( anyInt(), anyInt(), any(), eq(APP_HANDLE_MENU_BUTTON), eq(null), eq(null), ) spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = TASK_DRAG) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(TASK_DRAG), eq(null), eq(null)) } @Test @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_tdaFullscreen_windowingModeSetToFreeform() { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +9 −0 Original line number Diff line number Diff line Loading @@ -683,6 +683,15 @@ class DesktopTasksController( return false } val displayId = getDisplayIdForTaskOrDefault(task) if ( DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue && !desktopState.isDesktopModeSupportedOnDisplay(displayId) && transitionSource != DesktopModeTransitionSource.ADB_COMMAND && transitionSource != DesktopModeTransitionSource.APP_FROM_OVERVIEW ) { logW("moveTaskToDefaultDeskAndActivate display=$displayId does not support desk") return false } if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { val deskId = getOrCreateDefaultDeskId(displayId) ?: return false return moveTaskToDesk( Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +63 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,11 @@ import com.android.wm.shell.recents.RecentsTransitionStateListener import com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING import com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.ADB_COMMAND import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.APP_FROM_OVERVIEW import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.KEYBOARD_SHORTCUT import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.TASK_DRAG import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.shared.desktopmode.FakeDesktopConfig import com.android.wm.shell.shared.desktopmode.FakeDesktopState Loading Loading @@ -1615,6 +1620,64 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE) @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_displayNotSupported_withOverButtonOrAdb_movesToDesk() { val spyController = spy(controller) desktopState.overrideDesktopModeSupportPerDisplay[DEFAULT_DISPLAY] = false val task = setUpFullscreenTask() spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = ADB_COMMAND) verify(spyController, times(1)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(ADB_COMMAND), eq(null), eq(null)) clearInvocations(desksOrganizer) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = APP_FROM_OVERVIEW, ) verify(spyController, times(1)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(APP_FROM_OVERVIEW), eq(null), eq(null)) } @Test @EnableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE) @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_displayNotSupported_doesNothing() { val spyController = spy(controller) desktopState.overrideDesktopModeSupportPerDisplay[DEFAULT_DISPLAY] = false val task = setUpFullscreenTask() spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(UNKNOWN), eq(null), eq(null)) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = KEYBOARD_SHORTCUT, ) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(KEYBOARD_SHORTCUT), eq(null), eq(null)) spyController.moveTaskToDefaultDeskAndActivate( task.taskId, transitionSource = APP_HANDLE_MENU_BUTTON, ) verify(spyController, times(0)) .moveTaskToDesk( anyInt(), anyInt(), any(), eq(APP_HANDLE_MENU_BUTTON), eq(null), eq(null), ) spyController.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = TASK_DRAG) verify(spyController, times(0)) .moveTaskToDesk(anyInt(), anyInt(), any(), eq(TASK_DRAG), eq(null), eq(null)) } @Test @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToDesktop_tdaFullscreen_windowingModeSetToFreeform() { Loading