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

Commit 99720d48 authored by Winson Chung's avatar Winson Chung
Browse files

Fix regression in removing recent tasks by package name.

- When this method was pulled out into its own method, the break out
  logic was not updated, causing this logic to immediately return when we
  didn't match the first task package name.

Bug: 74130768
Test: atest FrameworksServicesTests:RecentTasksTest
Change-Id: I8dbaa84400f4dff9542f0096121a60ee60d5710f
parent 1b5a0deb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -534,8 +534,8 @@ class RecentTasks {
            final TaskRecord tr = mTasks.get(i);
            final String taskPackageName =
                    tr.getBaseIntent().getComponent().getPackageName();
            if (tr.userId != userId) return;
            if (!taskPackageName.equals(packageName)) return;
            if (tr.userId != userId) continue;
            if (!taskPackageName.equals(packageName)) continue;

            mService.mStackSupervisor.removeTaskByIdLocked(tr.taskId, true, REMOVE_FROM_RECENTS,
                    "remove-package-task");
+23 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import static org.mockito.Mockito.spy;

import static java.lang.Integer.MAX_VALUE;

import android.annotation.TestApi;
import android.app.ActivityManager;
import android.app.ActivityManager.RecentTaskInfo;
import android.app.ActivityManager.RunningTaskInfo;
@@ -566,6 +567,23 @@ public class RecentTasksTest extends ActivityTestsBase {
        assertNoTasksTrimmed();
    }

    @Test
    public void testRemovePackageByName() throws Exception {
        // Add a number of tasks with the same package name
        mRecentTasks.add(createTaskBuilder("com.android.pkg1", ".Task1").build());
        mRecentTasks.add(createTaskBuilder("com.android.pkg2", ".Task2").build());
        mRecentTasks.add(createTaskBuilder("com.android.pkg3", ".Task3").build());
        mRecentTasks.add(createTaskBuilder("com.android.pkg1", ".Task4").build());
        mRecentTasks.removeTasksByPackageName("com.android.pkg1", TEST_USER_0_ID);

        final ArrayList<TaskRecord> tasks = mRecentTasks.getRawTasks();
        for (int i = 0; i < tasks.size(); i++) {
            if (tasks.get(i).intent.getComponent().getPackageName().equals("com.android.pkg1")) {
                fail("Expected com.android.pkg1 tasks to be removed");
            }
        }
    }

    @Test
    public void testNotRecentsComponent_denyApiAccess() throws Exception {
        doReturn(PackageManager.PERMISSION_DENIED).when(mService).checkPermission(anyString(),
@@ -667,8 +685,12 @@ public class RecentTasksTest extends ActivityTestsBase {
    }

    private TaskBuilder createTaskBuilder(String className) {
        return createTaskBuilder(mContext.getPackageName(), className);
    }

    private TaskBuilder createTaskBuilder(String packageName, String className) {
        return new TaskBuilder(mService.mStackSupervisor)
                .setComponent(new ComponentName(mContext.getPackageName(), className))
                .setComponent(new ComponentName(packageName, className))
                .setStack(mStack)
                .setTaskId(LAST_TASK_ID++)
                .setUserId(TEST_USER_0_ID);