Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dda1157 authored by Graciela Wissen Putri's avatar Graciela Wissen Putri
Browse files

Unpin desktop task in overview

Don't add freeform tasks as first in the list for overview as it should
behave as any other task in overview.

Bug: 309008406
Test: atest RecentTasksControllerTest
      Open overview from home
Change-Id: I700d099b4a64d8e6327ad5e39287e4cc211836c9
parent 47af91a3
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -331,6 +331,8 @@ public class RecentTasksController implements TaskStackListenerCallback,

        ArrayList<ActivityManager.RecentTaskInfo> freeformTasks = new ArrayList<>();

        int mostRecentFreeformTaskIndex = Integer.MAX_VALUE;

        // Pull out the pairs as we iterate back in the list
        ArrayList<GroupedRecentTaskInfo> recentTasks = new ArrayList<>();
        for (int i = 0; i < rawList.size(); i++) {
@@ -343,6 +345,9 @@ public class RecentTasksController implements TaskStackListenerCallback,
            if (DesktopModeStatus.isEnabled() && mDesktopModeTaskRepository.isPresent()
                    && mDesktopModeTaskRepository.get().isActiveTask(taskInfo.taskId)) {
                // Freeform tasks will be added as a separate entry
                if (mostRecentFreeformTaskIndex == Integer.MAX_VALUE) {
                    mostRecentFreeformTaskIndex = recentTasks.size();
                }
                freeformTasks.add(taskInfo);
                continue;
            }
@@ -361,7 +366,7 @@ public class RecentTasksController implements TaskStackListenerCallback,

        // Add a special entry for freeform tasks
        if (!freeformTasks.isEmpty()) {
            recentTasks.add(0, GroupedRecentTaskInfo.forFreeformTasks(
            recentTasks.add(mostRecentFreeformTaskIndex, GroupedRecentTaskInfo.forFreeformTasks(
                    freeformTasks.toArray(new ActivityManager.RecentTaskInfo[0])));
        }

+48 −0
Original line number Diff line number Diff line
@@ -298,6 +298,54 @@ public class RecentTasksControllerTest extends ShellTestCase {
        mockitoSession.finishMocking();
    }

    @Test
    public void testGetRecentTasks_hasActiveDesktopTasks_proto2Enabled_freeformTaskOrder() {
        StaticMockitoSession mockitoSession = mockitoSession().mockStatic(
                DesktopModeStatus.class).startMocking();
        when(DesktopModeStatus.isEnabled()).thenReturn(true);

        ActivityManager.RecentTaskInfo t1 = makeTaskInfo(1);
        ActivityManager.RecentTaskInfo t2 = makeTaskInfo(2);
        ActivityManager.RecentTaskInfo t3 = makeTaskInfo(3);
        ActivityManager.RecentTaskInfo t4 = makeTaskInfo(4);
        ActivityManager.RecentTaskInfo t5 = makeTaskInfo(5);
        setRawList(t1, t2, t3, t4, t5);

        SplitBounds pair1Bounds =
                new SplitBounds(new Rect(), new Rect(), 1, 2, SNAP_TO_50_50);
        mRecentTasksController.addSplitPair(t1.taskId, t2.taskId, pair1Bounds);

        when(mDesktopModeTaskRepository.isActiveTask(3)).thenReturn(true);
        when(mDesktopModeTaskRepository.isActiveTask(5)).thenReturn(true);

        ArrayList<GroupedRecentTaskInfo> recentTasks = mRecentTasksController.getRecentTasks(
                MAX_VALUE, RECENT_IGNORE_UNAVAILABLE, 0);

        // 2 split screen tasks grouped, 2 freeform tasks grouped, 3 total recents entries
        assertEquals(3, recentTasks.size());
        GroupedRecentTaskInfo splitGroup = recentTasks.get(0);
        GroupedRecentTaskInfo freeformGroup = recentTasks.get(1);
        GroupedRecentTaskInfo singleGroup = recentTasks.get(2);

        // Check that groups have expected types
        assertEquals(GroupedRecentTaskInfo.TYPE_SPLIT, splitGroup.getType());
        assertEquals(GroupedRecentTaskInfo.TYPE_FREEFORM, freeformGroup.getType());
        assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, singleGroup.getType());

        // Check freeform group entries
        assertEquals(t3, freeformGroup.getTaskInfoList().get(0));
        assertEquals(t5, freeformGroup.getTaskInfoList().get(1));

        // Check split group entries
        assertEquals(t1, splitGroup.getTaskInfoList().get(0));
        assertEquals(t2, splitGroup.getTaskInfoList().get(1));

        // Check single entry
        assertEquals(t4, singleGroup.getTaskInfo1());

        mockitoSession.finishMocking();
    }

    @Test
    public void testGetRecentTasks_hasActiveDesktopTasks_proto2Disabled_doNotGroupFreeformTasks() {
        StaticMockitoSession mockitoSession = mockitoSession().mockStatic(