Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +13 −5 Original line number Diff line number Diff line Loading @@ -1676,7 +1676,8 @@ class DesktopTasksController( val bounds = calculateDefaultDesktopTaskBounds(displayLayout) val deskId = getOrCreateDefaultDeskId(displayId) ?: return if (DesktopModeFlags.ENABLE_CASCADING_WINDOWS.isTrue) { cascadeWindow(bounds, displayLayout, deskId) val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } cascadeWindow(bounds, displayLayout, deskId, stableBounds) } val pendingIntent = PendingIntent.getActivityAsUser( Loading Loading @@ -2949,8 +2950,9 @@ class DesktopTasksController( ) { val displayLayout = displayController.getDisplayLayout(task.displayId) if (displayLayout != null) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val initialBounds = Rect(task.configuration.windowConfiguration.bounds) cascadeWindow(initialBounds, displayLayout, deskId) cascadeWindow(initialBounds, displayLayout, deskId, stableBounds) wct.setBounds(task.token, initialBounds) } } Loading Loading @@ -3430,9 +3432,15 @@ class DesktopTasksController( ) } private fun cascadeWindow(bounds: Rect, displayLayout: DisplayLayout, deskId: Int) { val stableBounds = Rect() private fun cascadeWindow( bounds: Rect, displayLayout: DisplayLayout, deskId: Int, stableBounds: Rect = Rect(), ) { if (stableBounds.isEmpty) { displayLayout.getStableBoundsForDesktopMode(stableBounds) } val activeTasks = taskRepository.getExpandedTasksIdsInDeskOrdered(deskId) activeTasks Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +7 −4 Original line number Diff line number Diff line Loading @@ -1304,9 +1304,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun handleRequest_newFreeformTaskLaunch_cascadeApplied() { val stableBounds = Rect(0, 0, DISPLAY_DIMENSION_LONG, DISPLAY_DIMENSION_SHORT - TASKBAR_FRAME_HEIGHT) whenever(displayLayout.getStableBounds(any())).thenAnswer { i -> (i.arguments.first() as Rect).set(stableBounds) } setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS, active = false) Loading @@ -1324,7 +1327,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() fun handleRequest_newFreeformTaskLaunch_newDesk_desksCascadeIndependently() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) displayLayout.getStableBounds(stableBounds) // Launch freeform tasks in default desk. setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1349,7 +1352,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() fun handleRequest_freeformTaskAlreadyExistsInDesktopMode_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) displayLayout.getStableBounds(stableBounds) setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +13 −5 Original line number Diff line number Diff line Loading @@ -1676,7 +1676,8 @@ class DesktopTasksController( val bounds = calculateDefaultDesktopTaskBounds(displayLayout) val deskId = getOrCreateDefaultDeskId(displayId) ?: return if (DesktopModeFlags.ENABLE_CASCADING_WINDOWS.isTrue) { cascadeWindow(bounds, displayLayout, deskId) val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } cascadeWindow(bounds, displayLayout, deskId, stableBounds) } val pendingIntent = PendingIntent.getActivityAsUser( Loading Loading @@ -2949,8 +2950,9 @@ class DesktopTasksController( ) { val displayLayout = displayController.getDisplayLayout(task.displayId) if (displayLayout != null) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val initialBounds = Rect(task.configuration.windowConfiguration.bounds) cascadeWindow(initialBounds, displayLayout, deskId) cascadeWindow(initialBounds, displayLayout, deskId, stableBounds) wct.setBounds(task.token, initialBounds) } } Loading Loading @@ -3430,9 +3432,15 @@ class DesktopTasksController( ) } private fun cascadeWindow(bounds: Rect, displayLayout: DisplayLayout, deskId: Int) { val stableBounds = Rect() private fun cascadeWindow( bounds: Rect, displayLayout: DisplayLayout, deskId: Int, stableBounds: Rect = Rect(), ) { if (stableBounds.isEmpty) { displayLayout.getStableBoundsForDesktopMode(stableBounds) } val activeTasks = taskRepository.getExpandedTasksIdsInDeskOrdered(deskId) activeTasks Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +7 −4 Original line number Diff line number Diff line Loading @@ -1304,9 +1304,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun handleRequest_newFreeformTaskLaunch_cascadeApplied() { val stableBounds = Rect(0, 0, DISPLAY_DIMENSION_LONG, DISPLAY_DIMENSION_SHORT - TASKBAR_FRAME_HEIGHT) whenever(displayLayout.getStableBounds(any())).thenAnswer { i -> (i.arguments.first() as Rect).set(stableBounds) } setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS, active = false) Loading @@ -1324,7 +1327,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() fun handleRequest_newFreeformTaskLaunch_newDesk_desksCascadeIndependently() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) displayLayout.getStableBounds(stableBounds) // Launch freeform tasks in default desk. setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1349,7 +1352,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() fun handleRequest_freeformTaskAlreadyExistsInDesktopMode_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) displayLayout.getStableBounds(stableBounds) setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading