Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +4 −5 Original line number Diff line number Diff line Loading @@ -1680,7 +1680,7 @@ class DesktopTasksController( val bounds = calculateDefaultDesktopTaskBounds(displayLayout) val deskId = getOrCreateDefaultDeskId(displayId) ?: return if (DesktopModeFlags.ENABLE_CASCADING_WINDOWS.isTrue) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } cascadeWindow(bounds, displayLayout, deskId, stableBounds) } val pendingIntent = Loading Loading @@ -1997,7 +1997,7 @@ class DesktopTasksController( .any { taskId -> val taskInfo = shellTaskOrganizer.getRunningTaskInfo(taskId) ?: return false val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) val stableBounds = Rect().apply { displayLayout?.getStableBounds(this) } val stableBounds = Rect().also { displayLayout?.getStableBounds(it) } logD("taskInfo = %s", taskInfo) logD( "isTaskSnappedToHalfScreen(taskInfo) = %s", Loading Loading @@ -2175,8 +2175,7 @@ class DesktopTasksController( private fun getSnapBounds(taskInfo: RunningTaskInfo, position: SnapPosition): Rect { val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return Rect() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val destinationWidth = stableBounds.width() / 2 return when (position) { Loading Loading @@ -2954,7 +2953,7 @@ class DesktopTasksController( ) { val displayLayout = displayController.getDisplayLayout(task.displayId) if (displayLayout != null) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val initialBounds = Rect(task.configuration.windowConfiguration.bounds) cascadeWindow(initialBounds, displayLayout, deskId, stableBounds) wct.setBounds(task.token, initialBounds) Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +23 −27 Original line number Diff line number Diff line Loading @@ -539,14 +539,14 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun doesAnyTaskRequireTaskbarRounding_fullScreenTaskIsRunning_returnTrue() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } setUpFreeformTask(bounds = stableBounds, active = true) assertThat(controller.doesAnyTaskRequireTaskbarRounding(DEFAULT_DISPLAY)).isTrue() } @Test fun doesAnyTaskRequireTaskbarRounding_toggleResizeOfMaximizedTask_returnFalse() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val task1 = setUpFreeformTask(bounds = stableBounds, active = true) val argumentCaptor = argumentCaptor<Boolean>() Loading Loading @@ -575,7 +575,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun doesAnyTaskRequireTaskbarRounding_splitScreenTaskIsRunning_returnTrue() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } setUpFreeformTask( bounds = Rect(stableBounds.left, stableBounds.top, 500, stableBounds.bottom) ) Loading Loading @@ -1326,8 +1326,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun handleRequest_newFreeformTaskLaunch_newDesk_desksCascadeIndependently() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) 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) } // Launch freeform tasks in default desk. setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1351,8 +1354,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun handleRequest_freeformTaskAlreadyExistsInDesktopMode_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) 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) } setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1366,8 +1372,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_activeButClosingTask_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } val closingTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) taskRepository.addClosingTask( Loading @@ -1389,8 +1394,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionBottomRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1407,8 +1411,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionTopLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.BottomRight, stableBounds) Loading @@ -1425,8 +1428,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionBottomLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.TopLeft, stableBounds) Loading @@ -1443,8 +1445,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionTopRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.BottomLeft, stableBounds) Loading @@ -1461,8 +1462,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.TopRight, stableBounds) Loading @@ -1479,8 +1479,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowSnapLeft_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add freeform task with half display size snap bounds at left side. setUpFreeformTask( Loading @@ -1500,8 +1499,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowSnapRight_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add freeform task with half display size snap bounds at right side. setUpFreeformTask( Loading @@ -1527,8 +1525,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowMaximised_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add maximised freeform task. setUpFreeformTask(bounds = Rect(stableBounds)) Loading @@ -1546,8 +1543,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_defaultToCenterIfFree() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } val minTouchTarget = context.resources.getDimensionPixelSize( Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +4 −5 Original line number Diff line number Diff line Loading @@ -1680,7 +1680,7 @@ class DesktopTasksController( val bounds = calculateDefaultDesktopTaskBounds(displayLayout) val deskId = getOrCreateDefaultDeskId(displayId) ?: return if (DesktopModeFlags.ENABLE_CASCADING_WINDOWS.isTrue) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } cascadeWindow(bounds, displayLayout, deskId, stableBounds) } val pendingIntent = Loading Loading @@ -1997,7 +1997,7 @@ class DesktopTasksController( .any { taskId -> val taskInfo = shellTaskOrganizer.getRunningTaskInfo(taskId) ?: return false val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) val stableBounds = Rect().apply { displayLayout?.getStableBounds(this) } val stableBounds = Rect().also { displayLayout?.getStableBounds(it) } logD("taskInfo = %s", taskInfo) logD( "isTaskSnappedToHalfScreen(taskInfo) = %s", Loading Loading @@ -2175,8 +2175,7 @@ class DesktopTasksController( private fun getSnapBounds(taskInfo: RunningTaskInfo, position: SnapPosition): Rect { val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return Rect() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val destinationWidth = stableBounds.width() / 2 return when (position) { Loading Loading @@ -2954,7 +2953,7 @@ class DesktopTasksController( ) { val displayLayout = displayController.getDisplayLayout(task.displayId) if (displayLayout != null) { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val initialBounds = Rect(task.configuration.windowConfiguration.bounds) cascadeWindow(initialBounds, displayLayout, deskId, stableBounds) wct.setBounds(task.token, initialBounds) Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +23 −27 Original line number Diff line number Diff line Loading @@ -539,14 +539,14 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun doesAnyTaskRequireTaskbarRounding_fullScreenTaskIsRunning_returnTrue() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } setUpFreeformTask(bounds = stableBounds, active = true) assertThat(controller.doesAnyTaskRequireTaskbarRounding(DEFAULT_DISPLAY)).isTrue() } @Test fun doesAnyTaskRequireTaskbarRounding_toggleResizeOfMaximizedTask_returnFalse() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } val task1 = setUpFreeformTask(bounds = stableBounds, active = true) val argumentCaptor = argumentCaptor<Boolean>() Loading Loading @@ -575,7 +575,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun doesAnyTaskRequireTaskbarRounding_splitScreenTaskIsRunning_returnTrue() { val stableBounds = Rect().apply { displayLayout.getStableBounds(this) } val stableBounds = Rect().also { displayLayout.getStableBounds(it) } setUpFreeformTask( bounds = Rect(stableBounds.left, stableBounds.top, 500, stableBounds.bottom) ) Loading Loading @@ -1326,8 +1326,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS, Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun handleRequest_newFreeformTaskLaunch_newDesk_desksCascadeIndependently() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) 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) } // Launch freeform tasks in default desk. setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1351,8 +1354,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun handleRequest_freeformTaskAlreadyExistsInDesktopMode_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBounds(stableBounds) 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) } setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) val freeformTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1366,8 +1372,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_activeButClosingTask_cascadeNotApplied() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } val closingTask = setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) taskRepository.addClosingTask( Loading @@ -1389,8 +1394,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionBottomRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } setUpFreeformTask(bounds = DEFAULT_LANDSCAPE_BOUNDS) Loading @@ -1407,8 +1411,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionTopLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.BottomRight, stableBounds) Loading @@ -1425,8 +1428,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionBottomLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.TopLeft, stableBounds) Loading @@ -1443,8 +1445,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionTopRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.BottomLeft, stableBounds) Loading @@ -1461,8 +1462,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } addFreeformTaskAtPosition(DesktopTaskPosition.TopRight, stableBounds) Loading @@ -1479,8 +1479,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowSnapLeft_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add freeform task with half display size snap bounds at left side. setUpFreeformTask( Loading @@ -1500,8 +1499,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowSnapRight_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add freeform task with half display size snap bounds at right side. setUpFreeformTask( Loading @@ -1527,8 +1525,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_lastWindowMaximised_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } // Add maximised freeform task. setUpFreeformTask(bounds = Rect(stableBounds)) Loading @@ -1546,8 +1543,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) fun addMoveToDeskTaskChanges_defaultToCenterIfFree() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) val stableBounds = Rect().also { displayLayout.getStableBoundsForDesktopMode(it) } val minTouchTarget = context.resources.getDimensionPixelSize( Loading