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

Commit 42fa21f6 authored by Winson Chung's avatar Winson Chung
Browse files

Only remove visible recent tasks for the current user

Bug: 128389239
Test: atest WmTests:RecentTasksTest
Change-Id: I13d1fcff8cda0e3a7ddbdb54790f6c24b6763657
parent 77ad5ff0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2084,7 +2084,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        synchronized (mGlobalLock) {
            final long ident = Binder.clearCallingIdentity();
            try {
                getRecentTasks().removeAllVisibleTasks();
                getRecentTasks().removeAllVisibleTasks(mAmInternal.getCurrentUserId());
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
+2 −2
Original line number Diff line number Diff line
@@ -653,10 +653,10 @@ class RecentTasks {
        }
    }

    void removeAllVisibleTasks() {
    void removeAllVisibleTasks(int userId) {
        for (int i = mTasks.size() - 1; i >= 0; --i) {
            final TaskRecord tr = mTasks.get(i);
            if (isVisibleRecentTask(tr)) {
            if (tr.userId == userId && isVisibleRecentTask(tr)) {
                mTasks.remove(i);
                notifyTaskRemoved(tr, true /* wasTrimmed */, true /* killProcess */);
            }
+22 −2
Original line number Diff line number Diff line
@@ -625,7 +625,7 @@ public class RecentTasksTest extends ActivityTestsBase {
        // excludedTask is not trimmed.
        assertTrimmed(mTasks.get(0));

        mRecentTasks.removeAllVisibleTasks();
        mRecentTasks.removeAllVisibleTasks(TEST_USER_0_ID);

        // Only visible tasks removed.
        assertTrimmed(mTasks.get(0), mTasks.get(1), mTasks.get(2), mTasks.get(3));
@@ -849,10 +849,30 @@ public class RecentTasksTest extends ActivityTestsBase {
        mRecentTasks.add(t7);

        // Remove all the visible tasks and ensure that they are removed
        mRecentTasks.removeAllVisibleTasks();
        mRecentTasks.removeAllVisibleTasks(TEST_USER_0_ID);
        assertTrimmed(t1, t2, t3, t4, t5, t6, t7);
    }

    @Test
    public void testRemoveAllVisibleTasksPerUser() {
        mRecentTasks.setParameters(-1 /* min */, 3 /* max */, 100 /* ms */);

        // Create a visible task per user
        TaskRecord t1 = createTaskBuilder(".Task1")
                .setUserId(TEST_USER_0_ID)
                .build();
        mRecentTasks.add(t1);

        TaskRecord t2 = createTaskBuilder(".Task1")
                .setUserId(TEST_USER_1_ID)
                .build();
        mRecentTasks.add(t2);

        // Remove all the visible tasks and ensure that they are removed
        mRecentTasks.removeAllVisibleTasks(TEST_USER_0_ID);
        assertTrimmed(t1);
    }

    @Test
    public void testNotRestoreRecentTaskApis() {
        final TaskRecord task = createTaskBuilder(".Task").build();