From b7667279062ac2e213db1297e5f092762b14ea6a Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 6 Apr 2018 10:18:39 -0700 Subject: Fix regression in recent task list replacement - Accidentally removed a user check in ag/3762067 when adding the check for compatible activity types :(. Added it back and a test to ensure that we don't remove tasks that are otherwise identical except belong to different users. Bug: 77661783 Test: atest FrameworksServicesTests:RecentTasksTest Change-Id: I9a0ec8f62e85e89f97dce615252b4c7635f505f8 --- .../java/com/android/server/am/RecentTasks.java | 2 +- .../src/com/android/server/am/RecentTasksTest.java | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java index 1d305fb4248f..365c43666cc2 100644 --- a/services/core/java/com/android/server/am/RecentTasks.java +++ b/services/core/java/com/android/server/am/RecentTasks.java @@ -1255,7 +1255,7 @@ class RecentTasks { for (int i = 0; i < recentsCount; i++) { final TaskRecord tr = mTasks.get(i); if (task != tr) { - if (!task.hasCompatibleActivityType(tr)) { + if (!task.hasCompatibleActivityType(tr) || task.userId != tr.userId) { continue; } final Intent trIntent = tr.intent; 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..1192114109a9 100644 --- a/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java +++ b/services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java @@ -326,6 +326,33 @@ public class RecentTasksTest extends ActivityTestsBase { assertTrue(mCallbacksRecorder.removed.contains(task1)); } + @Test + public void testAddTaskCompatibleActivityTypeDifferentUser_expectNoRemove() throws Exception { + Configuration config1 = new Configuration(); + config1.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED); + TaskRecord task1 = createTaskBuilder(".Task1") + .setFlags(FLAG_ACTIVITY_NEW_TASK) + .setStack(mStack) + .setUserId(TEST_USER_0_ID) + .build(); + task1.onConfigurationChanged(config1); + assertTrue(task1.getActivityType() == ACTIVITY_TYPE_UNDEFINED); + mRecentTasks.add(task1); + mCallbacksRecorder.clear(); + + TaskRecord task2 = createTaskBuilder(".Task1") + .setFlags(FLAG_ACTIVITY_NEW_TASK) + .setStack(mStack) + .setUserId(TEST_USER_1_ID) + .build(); + assertTrue(task2.getActivityType() == ACTIVITY_TYPE_STANDARD); + mRecentTasks.add(task2); + assertTrue(mCallbacksRecorder.added.size() == 1); + assertTrue(mCallbacksRecorder.added.contains(task2)); + assertTrue(mCallbacksRecorder.trimmed.isEmpty()); + assertTrue(mCallbacksRecorder.removed.isEmpty()); + } + @Test public void testUsersTasks() throws Exception { mRecentTasks.setOnlyTestVisibleRange(); -- cgit v1.2.3-59-g8ed1b