Merge "Add API to query number of visible desktop tasks" into tm-qpr-dev am: 0927efa873
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20969963 Change-Id: I7f3ef33dd2480ce458e29a6e4c1f20cb761736ba Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -36,6 +36,7 @@ import android.database.ContentObserver;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
@@ -261,6 +262,11 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get number of tasks that are marked as visible */
|
||||||
|
int getVisibleTaskCount() {
|
||||||
|
return mDesktopModeTaskRepository.getVisibleTaskCount();
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private WindowContainerTransaction bringDesktopAppsToFront(boolean force) {
|
private WindowContainerTransaction bringDesktopAppsToFront(boolean force) {
|
||||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
@@ -438,5 +444,15 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
|||||||
executeRemoteCallWithTaskPermission(mController, "showDesktopApps",
|
executeRemoteCallWithTaskPermission(mController, "showDesktopApps",
|
||||||
DesktopModeController::showDesktopApps);
|
DesktopModeController::showDesktopApps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getVisibleTaskCount() throws RemoteException {
|
||||||
|
int[] result = new int[1];
|
||||||
|
executeRemoteCallWithTaskPermission(mController, "getVisibleTaskCount",
|
||||||
|
controller -> result[0] = controller.getVisibleTaskCount(),
|
||||||
|
true /* blocking */
|
||||||
|
);
|
||||||
|
return result[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,6 +142,13 @@ class DesktopModeTaskRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get number of tasks that are marked as visible
|
||||||
|
*/
|
||||||
|
fun getVisibleTaskCount(): Int {
|
||||||
|
return visibleTasks.size
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add (or move if it already exists) the task to the top of the ordered list.
|
* Add (or move if it already exists) the task to the top of the ordered list.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -96,6 +96,11 @@ class DesktopTasksController(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get number of tasks that are marked as visible */
|
||||||
|
fun getVisibleTaskCount(): Int {
|
||||||
|
return desktopModeTaskRepository.getVisibleTaskCount()
|
||||||
|
}
|
||||||
|
|
||||||
/** Move a task with given `taskId` to desktop */
|
/** Move a task with given `taskId` to desktop */
|
||||||
fun moveToDesktop(taskId: Int) {
|
fun moveToDesktop(taskId: Int) {
|
||||||
shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task -> moveToDesktop(task) }
|
shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task -> moveToDesktop(task) }
|
||||||
@@ -309,5 +314,16 @@ class DesktopTasksController(
|
|||||||
Consumer(DesktopTasksController::showDesktopApps)
|
Consumer(DesktopTasksController::showDesktopApps)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getVisibleTaskCount(): Int {
|
||||||
|
val result = IntArray(1)
|
||||||
|
ExecutorUtils.executeRemoteCallWithTaskPermission(
|
||||||
|
controller,
|
||||||
|
"getVisibleTaskCount",
|
||||||
|
{ controller -> result[0] = controller.getVisibleTaskCount() },
|
||||||
|
true /* blocking */
|
||||||
|
)
|
||||||
|
return result[0]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,4 +23,7 @@ interface IDesktopMode {
|
|||||||
|
|
||||||
/** Show apps on the desktop */
|
/** Show apps on the desktop */
|
||||||
void showDesktopApps();
|
void showDesktopApps();
|
||||||
|
|
||||||
|
/** Get count of visible desktop tasks */
|
||||||
|
int getVisibleTaskCount();
|
||||||
}
|
}
|
||||||
@@ -333,6 +333,41 @@ public class DesktopModeControllerTest extends ShellTestCase {
|
|||||||
assertThat(op2.getContainer()).isEqualTo(task2.token.asBinder());
|
assertThat(op2.getContainer()).isEqualTo(task2.token.asBinder());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetVisibleTaskCount_noTasks_returnsZero() {
|
||||||
|
assertThat(mController.getVisibleTaskCount()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetVisibleTaskCount_twoTasks_bothVisible_returnsTwo() {
|
||||||
|
RunningTaskInfo task1 = createFreeformTask();
|
||||||
|
mDesktopModeTaskRepository.addActiveTask(task1.taskId);
|
||||||
|
mDesktopModeTaskRepository.addOrMoveFreeformTaskToTop(task1.taskId);
|
||||||
|
mDesktopModeTaskRepository.updateVisibleFreeformTasks(task1.taskId, true /* visible */);
|
||||||
|
|
||||||
|
RunningTaskInfo task2 = createFreeformTask();
|
||||||
|
mDesktopModeTaskRepository.addActiveTask(task2.taskId);
|
||||||
|
mDesktopModeTaskRepository.addOrMoveFreeformTaskToTop(task2.taskId);
|
||||||
|
mDesktopModeTaskRepository.updateVisibleFreeformTasks(task2.taskId, true /* visible */);
|
||||||
|
|
||||||
|
assertThat(mController.getVisibleTaskCount()).isEqualTo(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetVisibleTaskCount_twoTasks_oneVisible_returnsOne() {
|
||||||
|
RunningTaskInfo task1 = createFreeformTask();
|
||||||
|
mDesktopModeTaskRepository.addActiveTask(task1.taskId);
|
||||||
|
mDesktopModeTaskRepository.addOrMoveFreeformTaskToTop(task1.taskId);
|
||||||
|
mDesktopModeTaskRepository.updateVisibleFreeformTasks(task1.taskId, true /* visible */);
|
||||||
|
|
||||||
|
RunningTaskInfo task2 = createFreeformTask();
|
||||||
|
mDesktopModeTaskRepository.addActiveTask(task2.taskId);
|
||||||
|
mDesktopModeTaskRepository.addOrMoveFreeformTaskToTop(task2.taskId);
|
||||||
|
mDesktopModeTaskRepository.updateVisibleFreeformTasks(task2.taskId, false /* visible */);
|
||||||
|
|
||||||
|
assertThat(mController.getVisibleTaskCount()).isEqualTo(1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHandleTransitionRequest_desktopModeNotActive_returnsNull() {
|
public void testHandleTransitionRequest_desktopModeNotActive_returnsNull() {
|
||||||
when(DesktopModeStatus.isActive(any())).thenReturn(false);
|
when(DesktopModeStatus.isActive(any())).thenReturn(false);
|
||||||
|
|||||||
@@ -140,6 +140,36 @@ class DesktopModeTaskRepositoryTest : ShellTestCase() {
|
|||||||
assertThat(listener.visibleFreeformTaskChangedCalls).isEqualTo(3)
|
assertThat(listener.visibleFreeformTaskChangedCalls).isEqualTo(3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getVisibleTaskCount() {
|
||||||
|
// No tasks, count is 0
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(0)
|
||||||
|
|
||||||
|
// New task increments count to 1
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 1, visible = true)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(1)
|
||||||
|
|
||||||
|
// Visibility update to same task does not increase count
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 1, visible = true)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(1)
|
||||||
|
|
||||||
|
// Second task visible increments count
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 2, visible = true)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(2)
|
||||||
|
|
||||||
|
// Hiding a task decrements count
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 1, visible = false)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(1)
|
||||||
|
|
||||||
|
// Hiding all tasks leaves count at 0
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 2, visible = false)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(0)
|
||||||
|
|
||||||
|
// Hiding a not existing task, count remains at 0
|
||||||
|
repo.updateVisibleFreeformTasks(taskId = 999, visible = false)
|
||||||
|
assertThat(repo.getVisibleTaskCount()).isEqualTo(0)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addOrMoveFreeformTaskToTop_didNotExist_addsToTop() {
|
fun addOrMoveFreeformTaskToTop_didNotExist_addsToTop() {
|
||||||
repo.addOrMoveFreeformTaskToTop(5)
|
repo.addOrMoveFreeformTaskToTop(5)
|
||||||
|
|||||||
@@ -196,6 +196,27 @@ class DesktopTasksControllerTest : ShellTestCase() {
|
|||||||
wct.assertReorderAt(index = 0, homeTask)
|
wct.assertReorderAt(index = 0, homeTask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getVisibleTaskCount_noTasks_returnsZero() {
|
||||||
|
assertThat(controller.getVisibleTaskCount()).isEqualTo(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getVisibleTaskCount_twoTasks_bothVisible_returnsTwo() {
|
||||||
|
setUpHomeTask()
|
||||||
|
setUpFreeformTask().also(::markTaskVisible)
|
||||||
|
setUpFreeformTask().also(::markTaskVisible)
|
||||||
|
assertThat(controller.getVisibleTaskCount()).isEqualTo(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getVisibleTaskCount_twoTasks_oneVisible_returnsOne() {
|
||||||
|
setUpHomeTask()
|
||||||
|
setUpFreeformTask().also(::markTaskVisible)
|
||||||
|
setUpFreeformTask().also(::markTaskHidden)
|
||||||
|
assertThat(controller.getVisibleTaskCount()).isEqualTo(1)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun moveToDesktop() {
|
fun moveToDesktop() {
|
||||||
val task = setUpFullscreenTask()
|
val task = setUpFullscreenTask()
|
||||||
@@ -224,7 +245,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
|
|||||||
assertThat(hierarchyOps).hasSize(3)
|
assertThat(hierarchyOps).hasSize(3)
|
||||||
assertReorderSequence(homeTask, freeformTask, fullscreenTask)
|
assertReorderSequence(homeTask, freeformTask, fullscreenTask)
|
||||||
assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
|
assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
|
||||||
.isEqualTo(WINDOWING_MODE_FREEFORM)
|
.isEqualTo(WINDOWING_MODE_FREEFORM)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user