summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson Chung <winsonc@google.com> 2018-04-06 10:18:39 -0700
committer Winson Chung <winsonc@google.com> 2018-04-06 21:05:00 +0000
commitb7667279062ac2e213db1297e5f092762b14ea6a (patch)
tree17bf3e06e4facefa117d53c826daa0408a184c2d
parent2b28f0699ad7f3c458aa8f619ad3019946bf04f2 (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.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java27
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();