From 99720d48dc1f0ad629120e921f45a36544277ac9 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 9 Apr 2018 11:28:46 -0700 Subject: 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 --- .../java/com/android/server/am/RecentTasks.java | 4 ++-- .../src/com/android/server/am/RecentTasksTest.java | 24 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java index 1d305fb4248f..b73b0f97995e 100644 --- a/services/core/java/com/android/server/am/RecentTasks.java +++ b/services/core/java/com/android/server/am/RecentTasks.java @@ -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"); diff --git a/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java b/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java index edc65095787c..727c8402912c 100644 --- a/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java +++ b/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java @@ -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 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); -- cgit v1.2.3-59-g8ed1b