diff options
| author | 2018-04-06 10:18:39 -0700 | |
|---|---|---|
| committer | 2018-04-06 21:05:00 +0000 | |
| commit | b7667279062ac2e213db1297e5f092762b14ea6a (patch) | |
| tree | 17bf3e06e4facefa117d53c826daa0408a184c2d | |
| parent | 2b28f0699ad7f3c458aa8f619ad3019946bf04f2 (diff) | |
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
| -rw-r--r-- | services/core/java/com/android/server/am/RecentTasks.java | 2 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java | 27 |
2 files changed, 28 insertions, 1 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..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 @@ -327,6 +327,33 @@ public class RecentTasksTest extends ActivityTestsBase { } @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(); |