From 9867b5172ad0d8d1d877932924de1198a695fa7c Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Fri, 28 Feb 2020 09:48:15 -0800 Subject: [PATCH] Use TaskFactory to create ActivityStack. ActivityStack now can be used as a Task by itself, so we need to make sure they are of right type. Also changed the signature of that constructor to make it more natural. Bug: 150409355 Test: WM smoke tests & TH. Test: atest TaskRecordTests Change-Id: Ia6aa8decd0af79e58344442e93bd15ca0e373fc9 --- .../com/android/server/wm/ActivityStack.java | 6 ++--- .../com/android/server/wm/DisplayContent.java | 4 ++-- .../core/java/com/android/server/wm/Task.java | 20 ++++++++-------- .../android/server/wm/TaskRecordTests.java | 23 +++++++++++-------- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 598389b1ba2b8..5ddd7311a0040 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -556,9 +556,9 @@ class ActivityStack extends Task { } } - ActivityStack(DisplayContent display, int id, ActivityStackSupervisor supervisor, - int activityType, ActivityInfo info, Intent intent) { - this(supervisor.mService, id, info, intent, null /*voiceSession*/, null /*voiceInteractor*/, + ActivityStack(ActivityTaskManagerService atmService, int id, int activityType, + ActivityInfo info, Intent intent) { + this(atmService, id, info, intent, null /*voiceSession*/, null /*voiceInteractor*/, null /*taskDescription*/, null /*stack*/); setActivityType(activityType); diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 5cd29301c733d..e74af5c9c6a25 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -5874,8 +5874,8 @@ class DisplayContent extends WindowContainer { sTaskFactory = factory; } + static Task create(ActivityTaskManagerService service, int taskId, int activityType, + ActivityInfo info, Intent intent) { + return getTaskFactory().create(service, taskId, activityType, info, intent); + } + static Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, Intent intent, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, ActivityStack stack) { @@ -3643,11 +3648,6 @@ class Task extends WindowContainer { service, taskId, info, intent, voiceSession, voiceInteractor, stack); } - static Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, TaskDescription taskDescription, ActivityStack stack) { - return getTaskFactory().create(service, taskId, info, intent, taskDescription, stack); - } - static Task restoreFromXml(XmlPullParser in, ActivityStackSupervisor stackSupervisor) throws IOException, XmlPullParserException { return getTaskFactory().restoreFromXml(in, stackSupervisor); @@ -3659,6 +3659,10 @@ class Task extends WindowContainer { * {@link #setTaskFactory(TaskFactory)}. */ static class TaskFactory { + Task create(ActivityTaskManagerService service, int taskId, int activityType, + ActivityInfo info, Intent intent) { + return new ActivityStack(service, taskId, activityType, info, intent); + } Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, Intent intent, IVoiceInteractionSession voiceSession, @@ -3667,12 +3671,6 @@ class Task extends WindowContainer { null /*taskDescription*/, stack); } - Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, TaskDescription taskDescription, ActivityStack stack) { - return new ActivityStack(service, taskId, info, intent, null /*voiceSession*/, - null /*voiceInteractor*/, taskDescription, stack); - } - /** * Should only be used when we're restoring {@link Task} from storage. */ 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 feadd0a496bb0..bf24bb0c1dbd3 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java @@ -111,7 +111,6 @@ public class TaskRecordTests extends ActivityTestsBase { @Before public void setUp() throws Exception { - Task.setTaskFactory(null); mParentBounds = new Rect(10 /*left*/, 30 /*top*/, 80 /*right*/, 60 /*bottom*/); removeGlobalMinSizeRestriction(); } @@ -148,11 +147,16 @@ public class TaskRecordTests extends ActivityTestsBase { TestTaskFactory factory = new TestTaskFactory(); Task.setTaskFactory(factory); - assertFalse(factory.mCreated); + try { + assertFalse(factory.mCreated); - Task.create(null, 0, null, null, null, null); + Task.create(mService, 0 /*taskId*/, 0 /*activityType*/, + new ActivityInfo(), new Intent()); - assertTrue(factory.mCreated); + assertTrue(factory.mCreated); + } finally { + Task.setTaskFactory(null); + } } @Test @@ -509,7 +513,7 @@ public class TaskRecordTests extends ActivityTestsBase { info.targetActivity = targetClassName; final Task task = Task.create(mService, 1 /* taskId */, info, intent, - null /* taskDescription */, null /*stack*/); + null /* voiceSession */, null /* voiceInteractor */, null /*stack*/); assertEquals("The alias activity component should be saved in task intent.", aliasClassName, task.intent.getComponent().getClassName()); @@ -997,17 +1001,16 @@ public class TaskRecordTests extends ActivityTestsBase { private boolean mCreated = false; @Override - Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, IVoiceInteractionSession voiceSession, - IVoiceInteractor voiceInteractor, ActivityStack stack) { + Task create(ActivityTaskManagerService service, int taskId, int activityType, + ActivityInfo info, Intent intent) { mCreated = true; return null; } @Override Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, ActivityManager.TaskDescription taskDescription, - ActivityStack stack) { + Intent intent, IVoiceInteractionSession voiceSession, + IVoiceInteractor voiceInteractor, ActivityStack stack) { mCreated = true; return null; }