diff options
| -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(); |