diff options
| author | 2018-11-08 10:10:00 +0000 | |
|---|---|---|
| committer | 2018-11-08 10:10:00 +0000 | |
| commit | 3cbf07268f0ea3f70779a31af61870fea867e4d4 (patch) | |
| tree | b4522fe7f3cebc32a00fa39780519c63d6cc0262 | |
| parent | 4353cd61938628722a343c8616f6256a417cdc78 (diff) | |
| parent | 2f9acd22ce8771de5b65677b4c021d0ab8248fb6 (diff) | |
Merge "Fix lost intent extra when starting activity from recents"
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskRecord.java | 2 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java | 15 |
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(); |