Add API to desktop mode to bring a desktop task to front

Allows launcher to move a desktop task to top.

Bug: 280468885
Test: atest DesktopTasksControllerTest
Change-Id: I417612fa8d262352cf372895e059ac81a9771f8a
This commit is contained in:
Ats Jenk
2023-05-18 09:08:00 -07:00
parent 90c0f00a69
commit c63dddf273
4 changed files with 32 additions and 0 deletions

View File

@@ -499,6 +499,11 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
controller -> controller.showDesktopApps(displayId));
}
@Override
public void showDesktopApp(int taskId) throws RemoteException {
// TODO
}
@Override
public int getVisibleTaskCount(int displayId) throws RemoteException {
int[] result = new int[1];

View File

@@ -276,6 +276,11 @@ class DesktopTasksController(
}
}
/** Move a task to the front */
fun moveTaskToFront(taskId: Int) {
shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task -> moveTaskToFront(task) }
}
/** Move a task to the front */
fun moveTaskToFront(taskInfo: RunningTaskInfo) {
KtProtoLog.v(
@@ -772,6 +777,13 @@ class DesktopTasksController(
) { c -> c.hideStashedDesktopApps(displayId) }
}
override fun showDesktopApp(taskId: Int) {
ExecutorUtils.executeRemoteCallWithTaskPermission(
controller,
"showDesktopApp"
) { c -> c.moveTaskToFront(taskId) }
}
override fun getVisibleTaskCount(displayId: Int): Int {
val result = IntArray(1)
ExecutorUtils.executeRemoteCallWithTaskPermission(

View File

@@ -32,6 +32,9 @@ interface IDesktopMode {
/** Hide apps that may be stashed */
void hideStashedDesktopApps(int displayId);
/** Bring task with the given id to front */
oneway void showDesktopApp(int taskId);
/** Get count of visible desktop tasks on the given display */
int getVisibleTaskCount(int displayId);

View File

@@ -344,6 +344,18 @@ class DesktopTasksControllerTest : ShellTestCase() {
}
}
@Test
fun moveTaskToFront_postsWctWithReorderOp() {
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
controller.moveTaskToFront(task1)
val wct = getLatestWct(expectTransition = TRANSIT_TO_FRONT)
assertThat(wct.hierarchyOps).hasSize(1)
wct.assertReorderAt(index = 0, task1)
}
@Test
fun moveToNextDisplay_noOtherDisplays() {
whenever(rootTaskDisplayAreaOrganizer.displayIds).thenReturn(intArrayOf(DEFAULT_DISPLAY))