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

Commit 6c246287 authored by Winson Chung's avatar Winson Chung
Browse files

Don't replace task in list if NEW_TASK + MULTIPLE_TASK is set

Bug: 183046894
Test: atest RecentTasksTest
Change-Id: Ifbaac51efa90b7a51bd3d64a32dde293ef45d040
parent e7ec6b42
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1573,6 +1573,10 @@ class RecentTasks {
                } else if (document || trIsDocument) {
                    // Only one of these is a document. Not the droid we're looking for.
                    continue;
                } else if (multiTasksAllowed) {
                    // Neither is a document, but the new task supports multiple tasks so keep the
                    // existing task
                    continue;
                }
            }
            return i;
+30 −7
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class RecentTasksTest extends WindowTestsBase {
    }

    @Test
    public void testAddTasksNoMultiple_expectNoTrim() {
    public void testAddDocumentTasksNoMultiple_expectNoTrim() {
        // Add same non-multiple-task document tasks will remove the task (to re-add it) but not
        // trim it
        Task documentTask1 = createDocumentTask(".DocumentTask1");
@@ -262,7 +262,7 @@ public class RecentTasksTest extends WindowTestsBase {
    }

    @Test
    public void testAddTasksMultipleDocumentTasks_expectNoTrim() {
    public void testAddMultipleDocumentTasks_expectNoTrim() {
        // Add same multiple-task document tasks does not trim the first tasks
        Task documentTask1 = createDocumentTask(".DocumentTask1",
                FLAG_ACTIVITY_MULTIPLE_TASK);
@@ -278,14 +278,14 @@ public class RecentTasksTest extends WindowTestsBase {
    }

    @Test
    public void testAddTasksMultipleTasks_expectRemovedNoTrim() {
        // Add multiple same-affinity non-document tasks, ensure that it removes the other task,
        // but that it does not trim it
    public void testAddTasks_expectRemovedNoTrim() {
        // Add multiple same-affinity non-document tasks, ensure that it removes, but does not trim
        // the other task
        Task task1 = createTaskBuilder(".Task1")
                .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                .setFlags(FLAG_ACTIVITY_NEW_TASK)
                .build();
        Task task2 = createTaskBuilder(".Task1")
                .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                .setFlags(FLAG_ACTIVITY_NEW_TASK)
                .build();
        mRecentTasks.add(task1);
        assertThat(mCallbacksRecorder.mAdded).hasSize(1);
@@ -301,6 +301,29 @@ public class RecentTasksTest extends WindowTestsBase {
        assertThat(mCallbacksRecorder.mRemoved).contains(task1);
    }

    @Test
    public void testAddMultipleTasks_expectNotRemoved() {
        // Add multiple same-affinity non-document tasks with MULTIPLE_TASK, ensure that it does not
        // remove the other task
        Task task1 = createTaskBuilder(".Task1")
                .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                .build();
        Task task2 = createTaskBuilder(".Task1")
                .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                .build();
        mRecentTasks.add(task1);
        assertThat(mCallbacksRecorder.mAdded).hasSize(1);
        assertThat(mCallbacksRecorder.mAdded).contains(task1);
        assertThat(mCallbacksRecorder.mTrimmed).isEmpty();
        assertThat(mCallbacksRecorder.mRemoved).isEmpty();
        mCallbacksRecorder.clear();
        mRecentTasks.add(task2);
        assertThat(mCallbacksRecorder.mAdded).hasSize(1);
        assertThat(mCallbacksRecorder.mAdded).contains(task2);
        assertThat(mCallbacksRecorder.mTrimmed).isEmpty();
        assertThat(mCallbacksRecorder.mRemoved).isEmpty();
    }

    @Test
    public void testAddTasksDifferentStacks_expectNoRemove() {
        // Adding the same task with different activity types should not trigger removal of the