From 6637caa28b66d9a5f94598940b68463f3dc804c6 Mon Sep 17 00:00:00 2001 From: Ats Jenk Date: Tue, 31 Jan 2023 13:48:29 -0800 Subject: [PATCH] Remove desktop tile from recents for proto 1 When desktop windowing proto 1 is enabled, remove the grouped desktop tile from recents. Each task will show up separately. Bug: 266711786 Test: atest RecentTasksControllerTest Change-Id: Iabe9dcc5800b2589556a6005f8cb1a715104f755 --- .../shell/recents/RecentTasksController.java | 5 +-- .../recents/RecentTasksControllerTest.java | 37 ++++++++++++++++++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java index 8490f9f156c70..0d9faa3c6f83c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java @@ -308,7 +308,6 @@ public class RecentTasksController implements TaskStackListenerCallback, rawMapping.put(taskInfo.taskId, taskInfo); } - boolean desktopModeActive = DesktopModeStatus.isActive(mContext); ArrayList freeformTasks = new ArrayList<>(); // Pull out the pairs as we iterate back in the list @@ -320,7 +319,7 @@ public class RecentTasksController implements TaskStackListenerCallback, continue; } - if (desktopModeActive && mDesktopModeTaskRepository.isPresent() + if (DesktopModeStatus.isProto2Enabled() && mDesktopModeTaskRepository.isPresent() && mDesktopModeTaskRepository.get().isActiveTask(taskInfo.taskId)) { // Freeform tasks will be added as a separate entry freeformTasks.add(taskInfo); @@ -328,7 +327,7 @@ public class RecentTasksController implements TaskStackListenerCallback, } final int pairedTaskId = mSplitTasks.get(taskInfo.taskId); - if (!desktopModeActive && pairedTaskId != INVALID_TASK_ID && rawMapping.contains( + if (pairedTaskId != INVALID_TASK_ID && rawMapping.contains( pairedTaskId)) { final ActivityManager.RecentTaskInfo pairedTaskInfo = rawMapping.get(pairedTaskId); rawMapping.remove(pairedTaskId); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java index 82392ad9a3eb9..b542fae060d1a 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java @@ -253,10 +253,10 @@ public class RecentTasksControllerTest extends ShellTestCase { } @Test - public void testGetRecentTasks_groupActiveFreeformTasks() { + public void testGetRecentTasks_hasActiveDesktopTasks_proto2Enabled_groupFreeformTasks() { StaticMockitoSession mockitoSession = mockitoSession().mockStatic( DesktopModeStatus.class).startMocking(); - when(DesktopModeStatus.isActive(any())).thenReturn(true); + when(DesktopModeStatus.isProto2Enabled()).thenReturn(true); ActivityManager.RecentTaskInfo t1 = makeTaskInfo(1); ActivityManager.RecentTaskInfo t2 = makeTaskInfo(2); @@ -292,6 +292,39 @@ public class RecentTasksControllerTest extends ShellTestCase { mockitoSession.finishMocking(); } + @Test + public void testGetRecentTasks_hasActiveDesktopTasks_proto2Disabled_doNotGroupFreeformTasks() { + StaticMockitoSession mockitoSession = mockitoSession().mockStatic( + DesktopModeStatus.class).startMocking(); + when(DesktopModeStatus.isProto2Enabled()).thenReturn(false); + + ActivityManager.RecentTaskInfo t1 = makeTaskInfo(1); + ActivityManager.RecentTaskInfo t2 = makeTaskInfo(2); + ActivityManager.RecentTaskInfo t3 = makeTaskInfo(3); + ActivityManager.RecentTaskInfo t4 = makeTaskInfo(4); + setRawList(t1, t2, t3, t4); + + when(mDesktopModeTaskRepository.isActiveTask(1)).thenReturn(true); + when(mDesktopModeTaskRepository.isActiveTask(3)).thenReturn(true); + + ArrayList recentTasks = mRecentTasksController.getRecentTasks( + MAX_VALUE, RECENT_IGNORE_UNAVAILABLE, 0); + + // Expect no grouping of tasks + assertEquals(4, recentTasks.size()); + assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, recentTasks.get(0).getType()); + assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, recentTasks.get(1).getType()); + assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, recentTasks.get(2).getType()); + assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, recentTasks.get(3).getType()); + + assertEquals(t1, recentTasks.get(0).getTaskInfo1()); + assertEquals(t2, recentTasks.get(1).getTaskInfo1()); + assertEquals(t3, recentTasks.get(2).getTaskInfo1()); + assertEquals(t4, recentTasks.get(3).getTaskInfo1()); + + mockitoSession.finishMocking(); + } + @Test public void testRemovedTaskRemovesSplit() { ActivityManager.RecentTaskInfo t1 = makeTaskInfo(1);