summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-11-08 10:10:00 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-11-08 10:10:00 +0000
commit3cbf07268f0ea3f70779a31af61870fea867e4d4 (patch)
treeb4522fe7f3cebc32a00fa39780519c63d6cc0262
parent4353cd61938628722a343c8616f6256a417cdc78 (diff)
parent2f9acd22ce8771de5b65677b4c021d0ab8248fb6 (diff)
Merge "Fix lost intent extra when starting activity from recents"
-rw-r--r--services/core/java/com/android/server/wm/TaskRecord.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java15
2 files changed, 16 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java
index d697f28a66eb..d4acb181070b 100644
--- a/services/core/java/com/android/server/wm/TaskRecord.java
+++ b/services/core/java/com/android/server/wm/TaskRecord.java
@@ -1960,7 +1960,7 @@ public class TaskRecord extends ConfigurationContainer implements TaskWindowCont
info.stackId = getStackId();
info.taskId = taskId;
info.isRunning = getTopActivity() != null;
- info.baseIntent = getBaseIntent();
+ info.baseIntent = new Intent(getBaseIntent());
info.baseActivity = reuseActivitiesReport.base != null
? reuseActivitiesReport.base.intent.getComponent()
: null;
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
index 44556305b1e1..72d7c90945b0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
@@ -19,9 +19,12 @@ package com.android.server.wm;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.sameInstance;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import android.app.ActivityManager;
@@ -92,6 +95,18 @@ public class TaskRecordTests extends ActivityTestsBase {
assertNotNull(TaskRecord.getTaskRecordFactory());
}
+ /** Ensure we have no chance to modify the original intent. */
+ @Test
+ public void testCopyBaseIntentForTaskInfo() {
+ final TaskRecord task = createTaskRecord(1);
+ task.lastTaskDescription = new ActivityManager.TaskDescription();
+ final ActivityManager.RecentTaskInfo info = new ActivityManager.RecentTaskInfo();
+ task.fillTaskInfo(info, new TaskRecord.TaskActivitiesReport());
+
+ // The intent of info should be a copy so assert that they are different instances.
+ assertThat(info.baseIntent, not(sameInstance(task.getBaseIntent())));
+ }
+
@Test
public void testCreateTestRecordUsingCustomizedFactory() throws Exception {
TestTaskRecordFactory factory = new TestTaskRecordFactory();