From 5acfecd6c1dd97d61e2ca2c2c6532bb2228bbce2 Mon Sep 17 00:00:00 2001 From: Chilun Date: Mon, 14 Sep 2020 18:46:26 +0800 Subject: [PATCH] Refactor WindowTestsBase to use one-task depth activities Refactor following part to use one-task depth activities instead of 2-level tasks. - WindowTestsBase#createTestActivityRecord - ActivityBuilder Bug: 155824575 Bug: 144248496 Test: atest WmTests Change-Id: Ia3e5796af70b7e59744c7d744b46280a211040a4 --- .../server/wm/ActivityDisplayTests.java | 7 +- .../ActivityMetricsLaunchObserverTests.java | 3 +- .../server/wm/ActivityRecordTests.java | 7 +- .../wm/ActivityStackSupervisorTests.java | 12 +- .../android/server/wm/ActivityStackTests.java | 56 +++--- .../server/wm/ActivityStarterTests.java | 4 +- .../wm/AnimatingActivityRegistryTest.java | 7 +- .../server/wm/AppChangeTransitionTests.java | 2 +- .../wm/AppTransitionControllerTest.java | 147 ++++++-------- .../android/server/wm/AppTransitionTests.java | 10 +- .../wm/AppWindowTokenAnimationTests.java | 7 +- .../server/wm/AppWindowTokenTests.java | 6 +- .../server/wm/DisplayAreaGroupTest.java | 2 +- .../server/wm/DisplayContentTests.java | 24 +-- .../server/wm/DragDropControllerTests.java | 2 +- .../android/server/wm/InsetsPolicyTest.java | 4 +- .../wm/RecentsAnimationControllerTest.java | 43 ++-- .../server/wm/RecentsAnimationTest.java | 27 ++- .../server/wm/RootActivityContainerTests.java | 42 ++-- .../server/wm/RootWindowContainerTests.java | 13 +- .../android/server/wm/SizeCompatTests.java | 2 +- .../server/wm/TaskDisplayAreaTests.java | 17 +- .../wm/TaskLaunchParamsModifierTests.java | 2 +- .../server/wm/TaskPositionerTests.java | 7 +- .../android/server/wm/TaskRecordTests.java | 14 +- .../com/android/server/wm/TaskStackTests.java | 12 +- .../src/com/android/server/wm/TaskTests.java | 18 +- .../android/server/wm/TransitionTests.java | 14 +- .../UnknownAppVisibilityControllerTest.java | 14 +- .../server/wm/WallpaperControllerTests.java | 3 +- .../server/wm/WindowContainerTests.java | 10 +- .../wm/WindowContainerTraversalTests.java | 4 +- .../server/wm/WindowOrganizerTests.java | 14 +- .../android/server/wm/WindowStateTests.java | 4 +- .../android/server/wm/WindowTestsBase.java | 186 +++++++++++------- .../com/android/server/wm/ZOrderingTests.java | 16 +- 36 files changed, 370 insertions(+), 392 deletions(-) diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java index f026b852f08ca..5685ea5a336e4 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java @@ -197,8 +197,7 @@ public class ActivityDisplayTests extends WindowTestsBase { // Add activity that should be shown on the keyguard. final ActivityRecord showWhenLockedActivity = new ActivityBuilder(mAtm) - .setCreateTask(true) - .setStack(stack) + .setTask(stack) .setActivityFlags(FLAG_SHOW_WHEN_LOCKED) .build(); @@ -225,8 +224,8 @@ public class ActivityDisplayTests extends WindowTestsBase { final TaskDisplayArea taskDisplayArea = mRootWindowContainer.getDefaultTaskDisplayArea(); final Task alwaysOnTopStack = taskDisplayArea.createStack(WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(alwaysOnTopStack).build(); + final ActivityRecord activity = new ActivityBuilder(mAtm) + .setTask(alwaysOnTopStack).build(); alwaysOnTopStack.setAlwaysOnTop(true); taskDisplayArea.positionChildAt(POSITION_TOP, alwaysOnTopStack, false /* includingParents */); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java index f1d3e1840588f..0654968d0c2f0 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java @@ -362,8 +362,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { .setDisplay(addNewDisplayContentAt(DisplayContent.POSITION_BOTTOM)) .build(); final ActivityRecord activityOnNewDisplay = new ActivityBuilder(mAtm) - .setStack(stack) - .setCreateTask(true) + .setTask(stack) .setProcessName("new") .build(); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index f37834560fff0..93666b4c46fe4 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -131,8 +131,9 @@ public class ActivityRecordTests extends WindowTestsBase { @Before public void setUp() throws Exception { - mStack = new TaskBuilder(mSupervisor).setCreateActivity(true).build(); - mTask = mStack.getBottomMostTask(); + mTask = new TaskBuilder(mSupervisor) + .setCreateParentTask(true).setCreateActivity(true).build(); + mStack = mTask.getRootTask(); mActivity = mTask.getTopNonFinishingActivity(); setBooted(mAtm); @@ -787,7 +788,7 @@ public class ActivityRecordTests extends WindowTestsBase { // Have two tasks (topRootableTask and mTask) as the children of mStack. ActivityRecord topActivity = new ActivityBuilder(mActivity.mAtmService) .setCreateTask(true) - .setStack(mStack) + .setParentTask(mStack) .build(); Task topRootableTask = topActivity.getTask(); topRootableTask.moveToFront("test"); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java index f9ad49bb5034a..1d5dc43876d51 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java @@ -71,8 +71,8 @@ public class ActivityStackSupervisorTests extends WindowTestsBase { */ @Test public void testStoppingActivityRemovedWhenResumed() { - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); mSupervisor.mStoppingActivities.add(firstActivity); firstActivity.completeResumeLocked(); @@ -85,8 +85,8 @@ public class ActivityStackSupervisorTests extends WindowTestsBase { */ @Test public void testReportWaitingActivityLaunchedIfNeeded() { - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); final WaitResult taskToFrontWait = new WaitResult(); mSupervisor.mWaitingActivityLaunched.add(taskToFrontWait); @@ -153,7 +153,7 @@ public class ActivityStackSupervisorTests extends WindowTestsBase { @Test public void testNotifyTaskFocusChanged() { final ActivityRecord fullScreenActivityA = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); + .setParentTask(mFullscreenStack).build(); final Task taskA = fullScreenActivityA.getTask(); final TaskChangeNotificationController taskChangeNotifier = @@ -166,7 +166,7 @@ public class ActivityStackSupervisorTests extends WindowTestsBase { reset(taskChangeNotifier); final ActivityRecord fullScreenActivityB = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); + .setParentTask(mFullscreenStack).build(); final Task taskB = fullScreenActivityB.getTask(); mAtm.setResumedActivityUncheckLocked(fullScreenActivityB, "resumeB"); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java index b6323313dd27e..3c5b9f9cee055 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java @@ -242,8 +242,7 @@ public class ActivityStackTests extends WindowTestsBase { public void testRemoveOrganizedTask_UpdateStackReference() { final Task rootHomeTask = mDefaultTaskDisplayArea.getRootHomeTask(); final ActivityRecord homeActivity = new ActivityBuilder(mAtm) - .setStack(rootHomeTask) - .setCreateTask(true) + .setTask(rootHomeTask) .build(); final Task secondaryStack = mAtm.mTaskOrganizerController.createRootTask( rootHomeTask.getDisplayContent(), WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, null); @@ -291,7 +290,7 @@ public class ActivityStackTests extends WindowTestsBase { @Test public void testStopActivityWhenActivityDestroyed() { - final ActivityRecord r = new ActivityBuilder(mAtm).setTask(mTask).build(); + final ActivityRecord r = new ActivityBuilder(mAtm).setCreateTask(true).build(); r.info.flags |= ActivityInfo.FLAG_NO_HISTORY; mStack.moveToFront("testStopActivityWithDestroy"); r.stopIfPossible(); @@ -303,7 +302,6 @@ public class ActivityStackTests extends WindowTestsBase { public void testFindTaskWithOverlay() { final ActivityRecord r = new ActivityBuilder(mAtm) .setCreateTask(true) - .setStack(mStack) .setUid(0) .build(); final Task task = r.getTask(); @@ -314,7 +312,7 @@ public class ActivityStackTests extends WindowTestsBase { final RootWindowContainer.FindTaskResult result = new RootWindowContainer.FindTaskResult(); - result.process(r, mStack); + result.process(r, task); assertEquals(r, task.getTopNonFinishingActivity(false /* includeOverlays */)); assertEquals(taskOverlay, task.getTopNonFinishingActivity(true /* includeOverlays */)); @@ -355,9 +353,11 @@ public class ActivityStackTests extends WindowTestsBase { final TaskDisplayArea taskDisplayArea = addNewDisplayContentAt(DisplayContent.POSITION_TOP) .getDefaultTaskDisplayArea(); final Task stack1 = createStackForShouldBeVisibleTest(taskDisplayArea, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); + WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */, + true /* twoLevelTask */); final Task stack2 = createStackForShouldBeVisibleTest(taskDisplayArea, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); + WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */, + true /* twoLevelTask */); // Do not move display to back because there is still another stack. stack2.moveToBack("testMoveStackToBackIncludingParent", stack2.getTopMostTask()); @@ -377,8 +377,7 @@ public class ActivityStackTests extends WindowTestsBase { WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, true /* onTop */); // Add an activity to the pinned stack so it isn't considered empty for visibility check. final ActivityRecord pinnedActivity = new ActivityBuilder(mAtm) - .setCreateTask(true) - .setStack(pinnedStack) + .setTask(pinnedStack) .build(); assertTrue(homeStack.shouldBeVisible(null /* starting */)); @@ -676,8 +675,7 @@ public class ActivityStackTests extends WindowTestsBase { translucentStack.getVisibility(null /* starting */)); // Add an activity to the pinned stack so it isn't considered empty for visibility check. final ActivityRecord pinnedActivity = new ActivityBuilder(mAtm) - .setCreateTask(true) - .setStack(pinnedStack) + .setTask(pinnedStack) .build(); assertEquals(STACK_VISIBILITY_VISIBLE, pinnedStack.getVisibility(null /* starting */)); } @@ -689,8 +687,7 @@ public class ActivityStackTests extends WindowTestsBase { ActivityRecord topRunningHomeActivity = homeStack.topRunningActivity(); if (topRunningHomeActivity == null) { topRunningHomeActivity = new ActivityBuilder(mAtm) - .setStack(homeStack) - .setCreateTask(true) + .setTask(homeStack) .build(); } @@ -721,7 +718,7 @@ public class ActivityStackTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, true /* onTop */); final ActivityRecord firstActivity = new ActivityBuilder(mAtm) - .setStack(homeStack) + .setParentTask(homeStack) .setCreateTask(true) .build(); final Task task = firstActivity.getTask(); @@ -985,14 +982,29 @@ public class ActivityStackTests extends WindowTestsBase { return stack; } - @SuppressWarnings("TypeParameterUnusedInFormals") private Task createStackForShouldBeVisibleTest( TaskDisplayArea taskDisplayArea, int windowingMode, int activityType, boolean onTop) { + return createStackForShouldBeVisibleTest(taskDisplayArea, + windowingMode, activityType, onTop, false /* twoLevelTask */); + } + + @SuppressWarnings("TypeParameterUnusedInFormals") + private Task createStackForShouldBeVisibleTest(TaskDisplayArea taskDisplayArea, + int windowingMode, int activityType, boolean onTop, boolean twoLevelTask) { final Task task; if (activityType == ACTIVITY_TYPE_HOME) { task = mDefaultTaskDisplayArea.getStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME); mDefaultTaskDisplayArea.positionChildAt(onTop ? POSITION_TOP : POSITION_BOTTOM, task, false /* includingParents */); + } else if (twoLevelTask) { + task = new TaskBuilder(mSupervisor) + .setTaskDisplayArea(taskDisplayArea) + .setWindowingMode(windowingMode) + .setActivityType(activityType) + .setOnTop(onTop) + .setCreateActivity(true) + .setCreateParentTask(true) + .build().getRootTask(); } else { task = new TaskBuilder(mSupervisor) .setTaskDisplayArea(taskDisplayArea) @@ -1154,7 +1166,7 @@ public class ActivityStackTests extends WindowTestsBase { ActivityRecord activity = homeStack.topRunningActivity(); if (activity == null) { activity = new ActivityBuilder(mAtm) - .setStack(homeStack) + .setParentTask(homeStack) .setCreateTask(true) .build(); } @@ -1319,8 +1331,7 @@ public class ActivityStackTests extends WindowTestsBase { @Test public void testResetTaskWithFinishingActivities() { - final ActivityRecord taskTop = - new ActivityBuilder(mAtm).setStack(mStack).setCreateTask(true).build(); + final ActivityRecord taskTop = new ActivityBuilder(mAtm).setTask(mStack).build(); // Make all activities in the task are finishing to simulate Task#getTopActivity // returns null. taskTop.finishing = true; @@ -1334,10 +1345,8 @@ public class ActivityStackTests extends WindowTestsBase { public void testIterateOccludedActivity() { final ArrayList occludedActivities = new ArrayList<>(); final Consumer handleOccludedActivity = occludedActivities::add; - final ActivityRecord bottomActivity = - new ActivityBuilder(mAtm).setStack(mStack).setTask(mTask).build(); - final ActivityRecord topActivity = - new ActivityBuilder(mAtm).setStack(mStack).setTask(mTask).build(); + final ActivityRecord bottomActivity = new ActivityBuilder(mAtm).setTask(mTask).build(); + final ActivityRecord topActivity = new ActivityBuilder(mAtm).setTask(mTask).build(); // Top activity occludes bottom activity. doReturn(true).when(mStack).shouldBeVisible(any()); assertTrue(topActivity.shouldBeVisible()); @@ -1355,8 +1364,7 @@ public class ActivityStackTests extends WindowTestsBase { assertThat(occludedActivities).isEmpty(); // A finishing activity should not occlude other activities behind. - final ActivityRecord finishingActivity = - new ActivityBuilder(mAtm).setStack(mStack).setTask(mTask).build(); + final ActivityRecord finishingActivity = new ActivityBuilder(mAtm).setTask(mTask).build(); finishingActivity.finishing = true; doCallRealMethod().when(finishingActivity).occludesParent(); assertTrue(topActivity.shouldBeVisible()); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index 3720e520b1b93..3bd8c2766ee25 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -712,10 +712,10 @@ public class ActivityStarterTests extends WindowTestsBase { // Put 2 tasks in the same stack (simulate the behavior of home stack). final Task rootTask = new TaskBuilder(mSupervisor).build(); final ActivityRecord activity = new ActivityBuilder(mAtm) - .setStack(rootTask) + .setParentTask(rootTask) .setCreateTask(true).build(); new ActivityBuilder(mAtm) - .setStack(activity.getRootTask()) + .setParentTask(activity.getRootTask()) .setCreateTask(true).build(); // Create a top finishing activity. diff --git a/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java b/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java index 0f5489575ee00..9d8710dc5cb2c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java @@ -17,7 +17,6 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyZeroInteractions; @@ -63,8 +62,7 @@ public class AnimatingActivityRegistryTest extends WindowTestsBase { @Test public void testDeferring() { - final ActivityRecord activity1 = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); final ActivityRecord activity2 = createAppWindow(activity1.getTask(), ACTIVITY_TYPE_STANDARD, "activity2").mActivityRecord; final AnimatingActivityRegistry registry = @@ -87,8 +85,7 @@ public class AnimatingActivityRegistryTest extends WindowTestsBase { @Test public void testContainerRemoved() { - final ActivityRecord window1 = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord window1 = createActivityRecord(mDisplayContent); final ActivityRecord window2 = createAppWindow(window1.getTask(), ACTIVITY_TYPE_STANDARD, "window2").mActivityRecord; final AnimatingActivityRegistry registry = diff --git a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java index 30502d8f16129..87a5985d507db 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java @@ -58,7 +58,7 @@ public class AppChangeTransitionTests extends WindowTestsBase { private ActivityRecord mActivity; public void setUpOnDisplay(DisplayContent dc) { - mActivity = createTestActivityRecord(dc, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD); + mActivity = createActivityRecord(dc, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD); mTask = mActivity.getTask(); mStack = mTask.getRootTask(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java index c1212f598f67e..bc4f16eccb0a1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java @@ -132,13 +132,11 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_visibilityAlreadyUpdated() { - // [DisplayContent] -+- [TaskStack1] - [Task1] - [ActivityRecord1] (opening, visible) - // +- [TaskStack2] - [Task2] - [ActivityRecord2] (closing, invisible) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity1 = createTestActivityRecord(stack1); + // [DisplayContent] -+- [Task1] - [ActivityRecord1] (opening, visible) + // +- [Task2] - [ActivityRecord2] (closing, invisible) + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity2 = createTestActivityRecord(stack2); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent); activity2.setVisible(false); activity2.mVisibleRequested = false; @@ -161,16 +159,14 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_visibilityAlreadyUpdated_butForcedTransitionRequested() { - // [DisplayContent] -+- [TaskStack1] - [Task1] - [ActivityRecord1] (closing, invisible) - // +- [TaskStack2] - [Task2] - [ActivityRecord2] (opening, visible) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity1 = createTestActivityRecord(stack1); + // [DisplayContent] -+- [Task1] - [ActivityRecord1] (closing, invisible) + // +- [Task2] - [ActivityRecord2] (opening, visible) + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); activity1.setVisible(true); activity1.mVisibleRequested = true; activity1.mRequestForceTransition = true; - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity2 = createTestActivityRecord(stack2); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent); activity2.setVisible(false); activity2.mVisibleRequested = false; activity2.mRequestForceTransition = true; @@ -195,10 +191,8 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_exitingBeforeTransition() { // Create another non-empty task so the animation target won't promote to task display area. - createTestActivityRecord( - mDisplayContent.getDefaultTaskDisplayArea().getOrCreateRootHomeTask()); - final Task stack = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity = createTestActivityRecord(stack); + createActivityRecord(mDisplayContent); + final ActivityRecord activity = createActivityRecord(mDisplayContent); activity.setVisible(false); activity.mIsExiting = true; @@ -208,19 +202,18 @@ public class AppTransitionControllerTest extends WindowTestsBase { // Animate closing apps even if it's not visible when it is exiting before we had a chance // to play the transition animation. assertEquals( - new ArraySet<>(new WindowContainer[]{stack}), + new ArraySet<>(new WindowContainer[]{activity.getRootTask()}), AppTransitionController.getAnimationTargets( new ArraySet<>(), closing, false /* visible */)); } @Test public void testGetAnimationTargets_windowsAreBeingReplaced() { - // [DisplayContent] -+- [TaskStack1] - [Task1] - [ActivityRecord1] (opening, visible) - // +- [AppWindow1] (being-replaced) - // +- [TaskStack2] - [Task2] - [ActivityRecord2] (closing, invisible) - // +- [AppWindow2] (being-replaced) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity1 = createTestActivityRecord(stack1); + // [DisplayContent] -+- [Task1] - [ActivityRecord1] (opening, visible) + // +- [AppWindow1] (being-replaced) + // +- [Task2] - [ActivityRecord2] (closing, invisible) + // +- [AppWindow2] (being-replaced) + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams( TYPE_BASE_APPLICATION); attrs.setTitle("AppWindow1"); @@ -228,8 +221,7 @@ public class AppTransitionControllerTest extends WindowTestsBase { appWindow1.mWillReplaceWindow = true; activity1.addWindow(appWindow1); - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity2 = createTestActivityRecord(stack2); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent); activity2.setVisible(false); activity2.mVisibleRequested = false; attrs.setTitle("AppWindow2"); @@ -246,7 +238,7 @@ public class AppTransitionControllerTest extends WindowTestsBase { // Don't animate closing apps if it's already invisible even though its windows are being // replaced. assertEquals( - new ArraySet<>(new WindowContainer[]{stack1}), + new ArraySet<>(new WindowContainer[]{activity1.getRootTask()}), AppTransitionController.getAnimationTargets( opening, closing, true /* visible */)); assertEquals( @@ -257,24 +249,22 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_openingClosingInDifferentTask() { - // [DisplayContent] -+- [TaskStack1] - [Task1] -+- [ActivityRecord1] (opening, invisible) - // | +- [ActivityRecord2] (invisible) + // [DisplayContent] -+- [Task1] -+- [ActivityRecord1] (opening, invisible) + // | +- [ActivityRecord2] (invisible) // | - // +- [TaskStack2] - [Task2] -+- [ActivityRecord3] (closing, visible) - // +- [ActivityRecord4] (invisible) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task1); + // +- [Task2] -+- [ActivityRecord3] (closing, visible) + // +- [ActivityRecord4] (invisible) + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); activity1.setVisible(false); activity1.mVisibleRequested = true; - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, + activity1.getTask()); activity2.setVisible(false); activity2.mVisibleRequested = false; - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final Task task2 = createTaskInStack(stack2, 0 /* userId */); - final ActivityRecord activity3 = createActivityRecordInTask(mDisplayContent, task2); - final ActivityRecord activity4 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity3 = createActivityRecord(mDisplayContent); + final ActivityRecord activity4 = createActivityRecord(mDisplayContent, + activity3.getTask()); activity4.setVisible(false); activity4.mVisibleRequested = false; @@ -286,25 +276,24 @@ public class AppTransitionControllerTest extends WindowTestsBase { // Promote animation targets to TaskStack level. Invisible ActivityRecords don't affect // promotion decision. assertEquals( - new ArraySet<>(new WindowContainer[]{stack1}), + new ArraySet<>(new WindowContainer[]{activity1.getRootTask()}), AppTransitionController.getAnimationTargets( opening, closing, true /* visible */)); assertEquals( - new ArraySet<>(new WindowContainer[]{stack2}), + new ArraySet<>(new WindowContainer[]{activity3.getRootTask()}), AppTransitionController.getAnimationTargets( opening, closing, false /* visible */)); } @Test public void testGetAnimationTargets_openingClosingInSameTask() { - // [DisplayContent] - [TaskStack] - [Task] -+- [ActivityRecord1] (opening, invisible) - // +- [ActivityRecord2] (closing, visible) - final Task stack = createTaskStackOnDisplay(mDisplayContent); - final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task); + // [DisplayContent] - [Task] -+- [ActivityRecord1] (opening, invisible) + // +- [ActivityRecord2] (closing, visible) + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); activity1.setVisible(false); activity1.mVisibleRequested = true; - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, + activity1.getTask()); final ArraySet opening = new ArraySet<>(); opening.add(activity1); @@ -325,26 +314,24 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_animateOnlyTranslucentApp() { - // [DisplayContent] -+- [TaskStack1] - [Task1] -+- [ActivityRecord1] (opening, invisible) - // | +- [ActivityRecord2] (visible) + // [DisplayContent] -+- [Task1] -+- [ActivityRecord1] (opening, invisible) + // | +- [ActivityRecord2] (visible) // | - // +- [TaskStack2] - [Task2] -+- [ActivityRecord3] (closing, visible) - // +- [ActivityRecord4] (visible) + // +- [Task2] -+- [ActivityRecord3] (closing, visible) + // +- [ActivityRecord4] (visible) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); activity1.setVisible(false); activity1.mVisibleRequested = true; activity1.setOccludesParent(false); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, + activity1.getTask()); - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final Task task2 = createTaskInStack(stack2, 0 /* userId */); - final ActivityRecord activity3 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity3 = createActivityRecord(mDisplayContent); activity3.setOccludesParent(false); - final ActivityRecord activity4 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity4 = createActivityRecord(mDisplayContent, + activity3.getTask()); final ArraySet opening = new ArraySet<>(); opening.add(activity1); @@ -365,28 +352,26 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test public void testGetAnimationTargets_animateTranslucentAndOpaqueApps() { - // [DisplayContent] -+- [TaskStack1] - [Task1] -+- [ActivityRecord1] (opening, invisible) - // | +- [ActivityRecord2] (opening, invisible) + // [DisplayContent] -+- [Task1] -+- [ActivityRecord1] (opening, invisible) + // | +- [ActivityRecord2] (opening, invisible) // | - // +- [TaskStack2] - [Task2] -+- [ActivityRecord3] (closing, visible) - // +- [ActivityRecord4] (closing, visible) + // +- [Task2] -+- [ActivityRecord3] (closing, visible) + // +- [ActivityRecord4] (closing, visible) - final Task stack1 = createTaskStackOnDisplay(mDisplayContent); - final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent); activity1.setVisible(false); activity1.mVisibleRequested = true; activity1.setOccludesParent(false); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, + activity1.getTask()); activity2.setVisible(false); activity2.mVisibleRequested = true; - final Task stack2 = createTaskStackOnDisplay(mDisplayContent); - final Task task2 = createTaskInStack(stack2, 0 /* userId */); - final ActivityRecord activity3 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity3 = createActivityRecord(mDisplayContent); activity3.setOccludesParent(false); - final ActivityRecord activity4 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity4 = createActivityRecord(mDisplayContent, + activity3.getTask()); final ArraySet opening = new ArraySet<>(); opening.add(activity1); @@ -398,26 +383,24 @@ public class AppTransitionControllerTest extends WindowTestsBase { // Promote animation targets to TaskStack level even though opening (closing) app is // translucent as long as all visible siblings animate at the same time. assertEquals( - new ArraySet<>(new WindowContainer[]{stack1}), + new ArraySet<>(new WindowContainer[]{activity1.getRootTask()}), AppTransitionController.getAnimationTargets( opening, closing, true /* visible */)); assertEquals( - new ArraySet<>(new WindowContainer[]{stack2}), + new ArraySet<>(new WindowContainer[]{activity3.getRootTask()}), AppTransitionController.getAnimationTargets( opening, closing, false /* visible */)); } @Test - public void testGetAnimationTargets_stackContainsMultipleTasks() { - // [DisplayContent] - [TaskStack] -+- [Task1] - [ActivityRecord1] (opening, invisible) - // +- [Task2] - [ActivityRecord2] (closing, visible) - final Task stack = createTaskStackOnDisplay(mDisplayContent); - final Task task1 = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task1); + public void testGetAnimationTargets_taskContainsMultipleTasks() { + // [DisplayContent] - [Task] -+- [Task1] - [ActivityRecord1] (opening, invisible) + // +- [Task2] - [ActivityRecord2] (closing, visible) + final Task parentTask = createTaskStackOnDisplay(mDisplayContent); + final ActivityRecord activity1 = createActivityRecordWithParentTask(parentTask); activity1.setVisible(false); activity1.mVisibleRequested = true; - final Task task2 = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity2 = createActivityRecordWithParentTask(parentTask); final ArraySet opening = new ArraySet<>(); opening.add(activity1); @@ -426,11 +409,11 @@ public class AppTransitionControllerTest extends WindowTestsBase { // Promote animation targets up to Task level, not beyond. assertEquals( - new ArraySet<>(new WindowContainer[]{task1}), + new ArraySet<>(new WindowContainer[]{activity1.getTask()}), AppTransitionController.getAnimationTargets( opening, closing, true /* visible */)); assertEquals( - new ArraySet<>(new WindowContainer[]{task2}), + new ArraySet<>(new WindowContainer[]{activity2.getTask()}), AppTransitionController.getAnimationTargets( opening, closing, false /* visible */)); } diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java index 485f92f3eef3b..850e72e8e94bc 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_CLOSE; @@ -116,10 +114,8 @@ public class AppTransitionTests extends WindowTestsBase { final DisplayContent dc2 = createNewDisplay(Display.STATE_ON); // Create 2 app window tokens to represent 2 activity window. - final ActivityRecord activity1 = createTestActivityRecord(dc1, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); - final ActivityRecord activity2 = createTestActivityRecord(dc2, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity1 = createActivityRecord(dc1); + final ActivityRecord activity2 = createActivityRecord(dc2); activity1.allDrawn = true; activity1.startingDisplayed = true; @@ -153,7 +149,7 @@ public class AppTransitionTests extends WindowTestsBase { final Task stack1 = createTaskStackOnDisplay(dc1); final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final ActivityRecord activity1 = createTestActivityRecord(dc1); + final ActivityRecord activity1 = createNonAttachedActivityRecord(dc1); task1.addChild(activity1, 0); // Simulate same app is during opening / closing transition set stage. diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java index b93a8fcc115bb..fd562c3f90b2d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java @@ -16,9 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; - import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION; @@ -31,7 +28,6 @@ import static org.mockito.ArgumentMatchers.intThat; import android.platform.test.annotations.Presubmit; import android.view.SurfaceControl; -import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import org.junit.Before; @@ -62,8 +58,7 @@ public class AppWindowTokenAnimationTests extends WindowTestsBase { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - mActivity = createTestActivityRecord(mDisplayContent, WINDOWING_MODE_FULLSCREEN, - ACTIVITY_TYPE_STANDARD); + mActivity = createActivityRecord(mDisplayContent); } @Test diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java index 6837e0e9248d1..28d5ffe342a0e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java @@ -92,7 +92,7 @@ public class AppWindowTokenTests extends WindowTestsBase { public void setUp() throws Exception { mStack = createTaskStackOnDisplay(mDisplayContent); mTask = createTaskInStack(mStack, 0 /* userId */); - mActivity = createTestActivityRecord(mDisplayContent); + mActivity = createNonAttachedActivityRecord(mDisplayContent); mTask.addChild(mActivity, 0); } @@ -307,7 +307,7 @@ public class AppWindowTokenTests extends WindowTestsBase { assertEquals(Configuration.ORIENTATION_PORTRAIT, displayConfig.orientation); assertEquals(Configuration.ORIENTATION_PORTRAIT, activityConfig.orientation); - final ActivityRecord topActivity = createTestActivityRecord(mStack); + final ActivityRecord topActivity = createActivityRecord(mTask); topActivity.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); assertEquals(Configuration.ORIENTATION_LANDSCAPE, displayConfig.orientation); @@ -490,7 +490,7 @@ public class AppWindowTokenTests extends WindowTestsBase { } private ActivityRecord createTestActivityRecordForGivenTask(Task task) { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); task.addChild(activity, 0); waitUntilHandlersIdle(); return activity; diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaGroupTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaGroupTest.java index 9a668b91c6562..4a5a81e89cd71 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaGroupTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaGroupTest.java @@ -67,7 +67,7 @@ public class DisplayAreaGroupTest extends WindowTestsBase { mDisplayAreaGroup.addChild(mTaskDisplayArea, POSITION_TOP); mStack = mTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); - mActivity = new ActivityBuilder(mAtm).setCreateTask(true).setStack(mStack).build(); + mActivity = new ActivityBuilder(mAtm).setTask(mStack).build(); mDisplayContent.setLastFocusedTaskDisplayArea(mTaskDisplayArea); } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index f52f983898728..fbfc0e09584b0 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -16,7 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; @@ -283,8 +282,7 @@ public class DisplayContentTests extends WindowTestsBase { @UseTestDisplay(addAllCommonWindows = true) @Test public void testComputeImeTarget_startingWindow() { - ActivityRecord activity = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + ActivityRecord activity = createActivityRecord(mDisplayContent); final WindowState startingWin = createWindow(null, TYPE_APPLICATION_STARTING, activity, "startingWin"); @@ -328,7 +326,7 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(dc, stack.getDisplayContent()); final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity = createTestActivityRecord(dc); + final ActivityRecord activity = createNonAttachedActivityRecord(dc); task.addChild(activity, 0); assertEquals(dc, task.getDisplayContent()); assertEquals(dc, activity.getDisplayContent()); @@ -399,14 +397,14 @@ public class DisplayContentTests extends WindowTestsBase { // Add stack with activity. final Task stack0 = createTaskStackOnDisplay(dc0); final Task task0 = createTaskInStack(stack0, 0 /* userId */); - final ActivityRecord activity = createTestActivityRecord(dc0); + final ActivityRecord activity = createNonAttachedActivityRecord(dc0); task0.addChild(activity, 0); dc0.configureDisplayPolicy(); assertNotNull(dc0.mTapDetector); final Task stack1 = createTaskStackOnDisplay(dc1); final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final ActivityRecord activity1 = createTestActivityRecord(dc0); + final ActivityRecord activity1 = createNonAttachedActivityRecord(dc0); task1.addChild(activity1, 0); dc1.configureDisplayPolicy(); assertNotNull(dc1.mTapDetector); @@ -1223,7 +1221,7 @@ public class DisplayContentTests extends WindowTestsBase { // Launch another activity before the transition is finished. final Task task2 = new TaskBuilder(mSupervisor).setDisplay(mDisplayContent).build(); - final ActivityRecord app2 = new ActivityBuilder(mAtm).setStack(task2) + final ActivityRecord app2 = new ActivityBuilder(mAtm).setTask(task2) .setUseProcess(app.app).build(); app2.setVisible(false); mDisplayContent.mOpeningApps.add(app2); @@ -1260,8 +1258,7 @@ public class DisplayContentTests extends WindowTestsBase { @Test public void testFinishFixedRotationNoAppTransitioningTask() { unblockDisplayRotation(mDisplayContent); - final ActivityRecord app = createActivityRecord(mDisplayContent, WINDOWING_MODE_FULLSCREEN, - ACTIVITY_TYPE_STANDARD); + final ActivityRecord app = createActivityRecord(mDisplayContent); final Task task = app.getTask(); final ActivityRecord app2 = new ActivityBuilder(mWm.mAtmService).setTask(task).build(); mDisplayContent.setFixedRotationLaunchingApp(app2, (mDisplayContent.getRotation() + 1) % 4); @@ -1314,8 +1311,7 @@ public class DisplayContentTests extends WindowTestsBase { final ActivityRecord pinnedActivity = createActivityRecord(displayContent, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD); final Task pinnedTask = pinnedActivity.getRootTask(); - final ActivityRecord homeActivity = createTestActivityRecord( - displayContent.getDefaultTaskDisplayArea().getOrCreateRootHomeTask()); + final ActivityRecord homeActivity = createActivityRecord(displayContent); if (displayConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { homeActivity.setOrientation(SCREEN_ORIENTATION_PORTRAIT); pinnedActivity.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); @@ -1378,10 +1374,8 @@ public class DisplayContentTests extends WindowTestsBase { // Skip freezing so the unrelated conditions in updateRotationUnchecked won't disturb. doNothing().when(mWm).startFreezingDisplay(anyInt(), anyInt(), any(), anyInt()); - final ActivityRecord activity = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); - final ActivityRecord recentsActivity = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_RECENTS); + final ActivityRecord activity = createActivityRecord(mDisplayContent); + final ActivityRecord recentsActivity = createActivityRecord(mDisplayContent); recentsActivity.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT); // Do not rotate if the recents animation is animating on top. diff --git a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java index 823aef0958315..5cb3ac1d3dd51 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java @@ -118,7 +118,7 @@ public class DragDropControllerTests extends WindowTestsBase { * Creates a window state which can be used as a drop target. */ private WindowState createDropTargetWindow(String name, int ownerId) { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); final Task stack = createTaskStackOnDisplay( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mDisplayContent); final Task task = createTaskInStack(stack, ownerId); diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java index a1606d3502adb..02d9c42517670 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java @@ -82,7 +82,7 @@ public class InsetsPolicyTest extends WindowTestsBase { addWindow(TYPE_STATUS_BAR, "statusBar"); addWindow(TYPE_NAVIGATION_BAR, "navBar"); - final WindowState win = createWindowOnStack(null, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, + final WindowState win = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, TYPE_APPLICATION, mDisplayContent, "app"); final InsetsSourceControl[] controls = addWindowAndGetControlsForDispatch(win); @@ -95,7 +95,7 @@ public class InsetsPolicyTest extends WindowTestsBase { addWindow(TYPE_STATUS_BAR, "statusBar"); addWindow(TYPE_NAVIGATION_BAR, "navBar"); - final WindowState win = createWindowOnStack(null, WINDOWING_MODE_FREEFORM, + final WindowState win = createWindow(null, WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD, TYPE_APPLICATION, mDisplayContent, "app"); final InsetsSourceControl[] controls = addWindowAndGetControlsForDispatch(win); diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java index 8094c9767b39c..cc92dddb6de1b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; @@ -107,8 +105,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Test public void testRemovedBeforeStarted_expectCanceled() throws Exception { - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); AnimationAdapter adapter = mController.addAnimation(activity.getTask(), false /* isRecentTaskInvisible */); adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_RECENTS, @@ -127,8 +124,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Test public void testCancelAfterRemove_expectIgnored() { - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); AnimationAdapter adapter = mController.addAnimation(activity.getTask(), false /* isRecentTaskInvisible */); adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_RECENTS, @@ -149,10 +145,8 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { public void testIncludedApps_expectTargetAndVisible() { mWm.setRecentsAnimationController(mController); final ActivityRecord homeActivity = createHomeActivity(); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); - final ActivityRecord hiddenActivity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); + final ActivityRecord hiddenActivity = createActivityRecord(mDefaultDisplay); hiddenActivity.setVisible(false); mDefaultDisplay.getConfiguration().windowConfiguration.setRotation( mDefaultDisplay.getRotation()); @@ -168,8 +162,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { public void testWallpaperIncluded_expectTarget() throws Exception { mWm.setRecentsAnimationController(mController); final ActivityRecord homeActivity = createHomeActivity(); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); final WallpaperWindowToken wallpaperWindowToken = new WallpaperWindowToken(mWm, @@ -191,8 +184,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { public void testWallpaperAnimatorCanceled_expectAnimationKeepsRunning() throws Exception { mWm.setRecentsAnimationController(mController); final ActivityRecord homeActivity = createHomeActivity(); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); final WallpaperWindowToken wallpaperWindowToken = new WallpaperWindowToken(mWm, @@ -218,8 +210,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { final ActivityRecord homeActivity = createHomeActivity(); final WindowState hwin1 = createWindow(null, TYPE_BASE_APPLICATION, homeActivity, "hwin1"); homeActivity.addWindow(hwin1); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); final WallpaperWindowToken wallpaperWindowToken = new WallpaperWindowToken(mWm, @@ -246,8 +237,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Test public void testDeferCancelAnimation() throws Exception { mWm.setRecentsAnimationController(mController); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); assertEquals(activity.getTask().getTopVisibleActivity(), activity); @@ -269,8 +259,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Test public void testDeferCancelAnimationWithScreenShot() throws Exception { mWm.setRecentsAnimationController(mController); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); assertEquals(activity.getTask().getTopVisibleActivity(), activity); @@ -301,8 +290,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { @Test public void testShouldAnimateWhenNoCancelWithDeferredScreenshot() { mWm.setRecentsAnimationController(mController); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, activity, "win1"); activity.addWindow(win1); assertEquals(activity.getTask().getTopVisibleActivity(), activity); @@ -325,8 +313,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { final ActivityRecord homeActivity = createHomeActivity(); homeActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - final ActivityRecord landActivity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord landActivity = createActivityRecord(mDefaultDisplay); landActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION, landActivity, "win1"); landActivity.addWindow(win1); @@ -365,8 +352,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { private ActivityRecord prepareFixedRotationLaunchingAppWithRecentsAnim() { final ActivityRecord homeActivity = createHomeActivity(); homeActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); // Add a window so it can be animated by the recents. final WindowState win = createWindow(null, TYPE_BASE_APPLICATION, activity, "win"); activity.addWindow(win); @@ -441,8 +427,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { homeWindow.getAttrs().flags |= FLAG_SHOW_WALLPAPER; // Landscape application - final ActivityRecord activity = createActivityRecord(mDefaultDisplay, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDefaultDisplay); final WindowState applicationWindow = createWindow(null, TYPE_BASE_APPLICATION, activity, "applicationWindow"); activity.addWindow(applicationWindow); @@ -513,7 +498,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase { private ActivityRecord createHomeActivity() { final ActivityRecord homeActivity = new ActivityBuilder(mWm.mAtmService) - .setStack(mRootHomeTask) + .setParentTask(mRootHomeTask) .setCreateTask(true) .build(); // Avoid {@link RecentsAnimationController.TaskAnimationAdapter#createRemoteAnimationTarget} diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java index c10d4fa7f1897..137cedde11cf8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java @@ -93,8 +93,7 @@ public class RecentsAnimationTest extends WindowTestsBase { ACTIVITY_TYPE_RECENTS, true /* onTop */); ActivityRecord recentActivity = new ActivityBuilder(mAtm) .setComponent(mRecentsComponent) - .setCreateTask(true) - .setStack(recentsStack) + .setTask(recentsStack) .build(); ActivityRecord topActivity = new ActivityBuilder(mAtm).setCreateTask(true).build(); topActivity.getRootTask().moveToFront("testRecentsActivityVisiblility"); @@ -124,7 +123,7 @@ public class RecentsAnimationTest extends WindowTestsBase { ActivityRecord topRunningHomeActivity = homeStack.topRunningActivity(); if (topRunningHomeActivity == null) { topRunningHomeActivity = new ActivityBuilder(mAtm) - .setStack(homeStack) + .setParentTask(homeStack) .setCreateTask(true) .build(); } @@ -182,7 +181,7 @@ public class RecentsAnimationTest extends WindowTestsBase { Task recentsStack = defaultTaskDisplayArea.createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_RECENTS, true /* onTop */); ActivityRecord recentActivity = new ActivityBuilder(mAtm).setComponent( - mRecentsComponent).setCreateTask(true).setStack(recentsStack).build(); + mRecentsComponent).setCreateTask(true).setParentTask(recentsStack).build(); WindowProcessController app = recentActivity.app; recentActivity.app = null; @@ -214,7 +213,7 @@ public class RecentsAnimationTest extends WindowTestsBase { if (targetActivity == null) { targetActivity = new ActivityBuilder(mAtm) .setCreateTask(true) - .setStack(homeStack) + .setParentTask(homeStack) .build(); } @@ -222,7 +221,7 @@ public class RecentsAnimationTest extends WindowTestsBase { ActivityRecord anotherHomeActivity = new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "Home2")) .setCreateTask(true) - .setStack(homeStack) + .setParentTask(homeStack) .build(); // Start an activity on top so the recents activity can be started. new ActivityBuilder(mAtm) @@ -255,21 +254,21 @@ public class RecentsAnimationTest extends WindowTestsBase { new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "App1")) .setCreateTask(true) - .setStack(fullscreenStack) + .setParentTask(fullscreenStack) .build(); Task recentsStack = taskDisplayArea.createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_RECENTS, true /* onTop */); new ActivityBuilder(mAtm) .setComponent(mRecentsComponent) .setCreateTask(true) - .setStack(recentsStack) + .setParentTask(recentsStack) .build(); Task fullscreenStack2 = taskDisplayArea.createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "App2")) .setCreateTask(true) - .setStack(fullscreenStack2) + .setParentTask(fullscreenStack2) .build(); // Start the recents animation @@ -296,21 +295,21 @@ public class RecentsAnimationTest extends WindowTestsBase { new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "App1")) .setCreateTask(true) - .setStack(fullscreenStack) + .setParentTask(fullscreenStack) .build(); Task recentsStack = taskDisplayArea.createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_RECENTS, true /* onTop */); new ActivityBuilder(mAtm) .setComponent(mRecentsComponent) .setCreateTask(true) - .setStack(recentsStack) + .setParentTask(recentsStack) .build(); Task fullscreenStack2 = taskDisplayArea.createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "App2")) .setCreateTask(true) - .setStack(fullscreenStack2) + .setParentTask(fullscreenStack2) .build(); // Start the recents animation @@ -331,7 +330,7 @@ public class RecentsAnimationTest extends WindowTestsBase { Task homeStack = taskDisplayArea.getStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME); ActivityRecord otherUserHomeActivity = new ActivityBuilder(mAtm) - .setStack(homeStack) + .setParentTask(homeStack) .setCreateTask(true) .setComponent(new ComponentName(mContext.getPackageName(), "Home2")) .build(); @@ -342,7 +341,7 @@ public class RecentsAnimationTest extends WindowTestsBase { new ActivityBuilder(mAtm) .setComponent(new ComponentName(mContext.getPackageName(), "App1")) .setCreateTask(true) - .setStack(fullscreenStack) + .setParentTask(fullscreenStack) .build(); doReturn(TEST_USER_ID).when(mAtm).getCurrentUserId(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java index 901ed36254ea7..1879e9e88822e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java @@ -117,12 +117,10 @@ public class RootActivityContainerTests extends WindowTestsBase { */ @Test public void testReplacingTaskInPinnedStack() { - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); - final Task task = firstActivity.getTask(); - - final ActivityRecord secondActivity = new ActivityBuilder(mAtm).setTask(task) - .setStack(mFullscreenStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); + final ActivityRecord secondActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); mFullscreenStack.moveToFront("testReplacingTaskInPinnedStack"); @@ -152,12 +150,12 @@ public class RootActivityContainerTests extends WindowTestsBase { @Test public void testMovingBottomMostStackActivityToPinnedStack() { - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(mFullscreenStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); final Task task = firstActivity.getTask(); - final ActivityRecord secondActivity = new ActivityBuilder(mAtm).setTask(task) - .setStack(mFullscreenStack).build(); + final ActivityRecord secondActivity = new ActivityBuilder(mAtm) + .setTask(mFullscreenStack).build(); mFullscreenStack.moveTaskToBack(task); @@ -287,8 +285,7 @@ public class RootActivityContainerTests extends WindowTestsBase { final int originalStackCount = defaultTaskDisplayArea.getStackCount(); final Task stack = defaultTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setTask(stack).build(); assertEquals(originalStackCount + 1, defaultTaskDisplayArea.getStackCount()); @@ -311,17 +308,15 @@ public class RootActivityContainerTests extends WindowTestsBase { final int originalStackCount = defaultTaskDisplayArea.getStackCount(); final Task stack = defaultTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setTask(stack).build(); assertEquals(originalStackCount + 1, defaultTaskDisplayArea.getStackCount()); final DisplayContent dc = defaultTaskDisplayArea.getDisplayContent(); - final TaskDisplayArea secondTaskDisplayArea = WindowTestsBase.createTaskDisplayArea( + final TaskDisplayArea secondTaskDisplayArea = createTaskDisplayArea( dc, mRootWindowContainer.mWmService, "TestTaskDisplayArea", FEATURE_VENDOR_FIRST); final Task secondStack = secondTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - new ActivityBuilder(mAtm).setCreateTask(true).setStack(secondStack) - .setUseProcess(firstActivity.app).build(); + new ActivityBuilder(mAtm).setTask(secondStack).setUseProcess(firstActivity.app).build(); assertEquals(1, secondTaskDisplayArea.getStackCount()); // Let's pretend that the app has crashed. @@ -339,8 +334,7 @@ public class RootActivityContainerTests extends WindowTestsBase { .getDefaultTaskDisplayArea(); final Task stack = defaultTaskDisplayArea.createStack( WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord activity = new ActivityBuilder(mAtm).setTask(stack).build(); // Created stacks are focusable by default. assertTrue(stack.isTopActivityFocusable()); @@ -353,8 +347,8 @@ public class RootActivityContainerTests extends WindowTestsBase { final Task pinnedStack = defaultTaskDisplayArea.createStack( WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final ActivityRecord pinnedActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(pinnedStack).build(); + final ActivityRecord pinnedActivity = new ActivityBuilder(mAtm) + .setTask(pinnedStack).build(); // We should not be focusable when in pinned mode assertFalse(pinnedStack.isTopActivityFocusable()); @@ -363,13 +357,9 @@ public class RootActivityContainerTests extends WindowTestsBase { // Add flag forcing focusability. pinnedActivity.info.flags |= FLAG_ALWAYS_FOCUSABLE; - // We should not be focusable when in pinned mode + // Task with FLAG_ALWAYS_FOCUSABLE should be focusable. assertTrue(pinnedStack.isTopActivityFocusable()); assertTrue(pinnedActivity.isFocusable()); - - // Without the overridding activity, stack should not be focusable. - pinnedStack.removeChild(pinnedActivity.getTask(), "testFocusability"); - assertFalse(pinnedStack.isTopActivityFocusable()); } /** diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java index cc8b2a1bb392d..62aa02f609ad9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; @@ -152,8 +150,7 @@ public class RootWindowContainerTests extends WindowTestsBase { DisplayContent displayContent = mWm.mRoot.getDisplayContent(DEFAULT_DISPLAY); TaskDisplayArea taskDisplayArea = displayContent.getDefaultTaskDisplayArea(); Task stack = taskDisplayArea.getStackAt(0); - ActivityRecord activity = createActivityRecord(displayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + ActivityRecord activity = createActivityRecord(displayContent); stack.mPausingActivity = activity; activity.setState(PAUSING, "test PAUSING"); @@ -176,7 +173,7 @@ public class RootWindowContainerTests extends WindowTestsBase { public void testTaskLayerRank() { final Task rootTask = new TaskBuilder(mSupervisor).build(); final Task task1 = new TaskBuilder(mSupervisor).setParentTask(rootTask).build(); - new ActivityBuilder(mAtm).setStack(task1).build().mVisibleRequested = true; + new ActivityBuilder(mAtm).setTask(task1).build().mVisibleRequested = true; // RootWindowContainer#invalidateTaskLayers should post to update. waitHandlerIdle(mWm.mH); @@ -185,7 +182,7 @@ public class RootWindowContainerTests extends WindowTestsBase { assertEquals(Task.LAYER_RANK_INVISIBLE, rootTask.mLayerRank); final Task task2 = new TaskBuilder(mSupervisor).build(); - new ActivityBuilder(mAtm).setStack(task2).build().mVisibleRequested = true; + new ActivityBuilder(mAtm).setTask(task2).build().mVisibleRequested = true; waitHandlerIdle(mWm.mH); // Note that ensureActivitiesVisible is disabled in SystemServicesTestRule, so both the @@ -208,8 +205,8 @@ public class RootWindowContainerTests extends WindowTestsBase { final WindowProcessController wpc = activity.app; final ActivityRecord[] activities = { activity, - new ActivityBuilder(mWm.mAtmService).setStack(task).setUseProcess(wpc).build(), - new ActivityBuilder(mWm.mAtmService).setStack(task).setUseProcess(wpc).build() + new ActivityBuilder(mWm.mAtmService).setTask(task).setUseProcess(wpc).build(), + new ActivityBuilder(mWm.mAtmService).setTask(task).setUseProcess(wpc).build() }; activities[0].detachFromProcess(); activities[1].finishing = true; diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index d68dde5734ca6..4300971be6897 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -768,7 +768,7 @@ public class SizeCompatTests extends WindowTestsBase { params.setFitInsetsTypes(0); final TestWindowState w = new TestWindowState( activity.mWmService, mock(Session.class), new TestIWindow(), params, activity); - WindowTestsBase.makeWindowVisible(w); + makeWindowVisible(w); w.mWinAnimator.mDrawState = WindowStateAnimator.HAS_DRAWN; activity.addWindow(w); return w; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java index 8b025e34401ab..c5c947bf21d89 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java @@ -79,7 +79,7 @@ public class TaskDisplayAreaTests extends WindowTestsBase { // Stack should contain visible app window to be considered visible. final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */); assertFalse(mPinnedStack.isVisible()); - final ActivityRecord pinnedApp = createTestActivityRecord(mDisplayContent); + final ActivityRecord pinnedApp = createNonAttachedActivityRecord(mDisplayContent); pinnedTask.addChild(pinnedApp, 0 /* addPos */); assertTrue(mPinnedStack.isVisible()); } @@ -94,7 +94,7 @@ public class TaskDisplayAreaTests extends WindowTestsBase { final Task stack = createTaskStackOnDisplay( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mDisplayContent); final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); task.addChild(activity, 0 /* addPos */); final TaskDisplayArea taskDisplayArea = activity.getDisplayArea(); activity.mNeedsAnimationBoundsLayer = true; @@ -236,7 +236,7 @@ public class TaskDisplayAreaTests extends WindowTestsBase { ActivityRecord homeActivity = rootHomeTask.getTopNonFinishingActivity(); if (homeActivity == null) { homeActivity = new ActivityBuilder(mWm.mAtmService) - .setStack(rootHomeTask).setCreateTask(true).build(); + .setParentTask(rootHomeTask).setCreateTask(true).build(); } homeActivity.setVisible(false); homeActivity.mVisibleRequested = true; @@ -255,10 +255,10 @@ public class TaskDisplayAreaTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); final Task secondStack = secondTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(firstStack).build(); - final ActivityRecord secondActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(secondStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(firstStack).build(); + final ActivityRecord secondActivity = new ActivityBuilder(mAtm) + .setTask(secondStack).build(); // Activity on TDA1 is focused mDisplayContent.setFocusedApp(firstActivity); @@ -284,8 +284,7 @@ public class TaskDisplayAreaTests extends WindowTestsBase { final TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea(); final Task stack = taskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord activity = new ActivityBuilder(mAtm).setTask(stack).build(); mDisplayContent.setFocusedApp(activity); activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java index 1d32e17dd5e13..a1097d26fbbb1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -1351,7 +1351,7 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { private ActivityRecord createSourceActivity(TestDisplayContent display) { final Task stack = display.getDefaultTaskDisplayArea() .createStack(display.getWindowingMode(), ACTIVITY_TYPE_STANDARD, true); - return new ActivityBuilder(mAtm).setStack(stack).setCreateTask(true).build(); + return new ActivityBuilder(mAtm).setTask(stack).build(); } private void addFreeformTaskTo(TestDisplayContent display, Rect bounds) { diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java index 27cae2fc1a4ca..7abe3698a99c1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java @@ -76,11 +76,8 @@ public class TaskPositionerTests extends WindowTestsBase { mMinVisibleHeight = dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, dm); removeGlobalMinSizeRestriction(); - final Task stack = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity = new ActivityBuilder(stack.mAtmService) - .setStack(stack) - // In real case, there is no additional level for freeform mode. - .setCreateTask(false) + final ActivityRecord activity = new ActivityBuilder(mAtm) + .setCreateTask(true) .build(); final WindowState win = createWindow(null, TYPE_BASE_APPLICATION, activity, "window"); mPositioner = new TaskPositioner(mWm); 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 2fa7589ed7198..f7e68ce9fe653 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java @@ -269,7 +269,8 @@ public class TaskRecordTests extends WindowTestsBase { assertEquals(fullScreenBounds.height(), task.getBounds().height()); // Top activity gets used - final ActivityRecord top = new ActivityBuilder(mAtm).setTask(task).setStack(stack).build(); + final ActivityRecord top = new ActivityBuilder(mAtm).setTask(task).setParentTask(stack) + .build(); assertEquals(top, task.getTopNonFinishingActivity()); top.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); assertThat(task.getBounds().width()).isGreaterThan(task.getBounds().height()); @@ -1001,7 +1002,8 @@ public class TaskRecordTests extends WindowTestsBase { @Test public void testNotSpecifyOrientationByFloatingTask() { - final Task task = getTestTask(); + final Task task = new TaskBuilder(mSupervisor) + .setCreateActivity(true).setCreateParentTask(true).build(); final ActivityRecord activity = task.getTopMostActivity(); final WindowContainer parentContainer = task.getParent(); final TaskDisplayArea taskDisplayArea = task.getDisplayArea(); @@ -1027,10 +1029,10 @@ public class TaskRecordTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); final Task secondStack = secondTaskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord firstActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(firstStack).build(); - final ActivityRecord secondActivity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(secondStack).build(); + final ActivityRecord firstActivity = new ActivityBuilder(mAtm) + .setTask(firstStack).build(); + final ActivityRecord secondActivity = new ActivityBuilder(mAtm) + .setTask(secondStack).build(); firstActivity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); secondActivity.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java index 7cf30c0c9f353..404141211646e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java @@ -85,12 +85,12 @@ public class TaskStackTests extends WindowTestsBase { public void testClosingAppDifferentStackOrientation() { final Task stack = createTaskStackOnDisplay(mDisplayContent); final Task task1 = createTaskInStack(stack, 0 /* userId */); - ActivityRecord activity1 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity1 = createNonAttachedActivityRecord(mDisplayContent); task1.addChild(activity1, 0); activity1.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); final Task task2 = createTaskInStack(stack, 1 /* userId */); - ActivityRecord activity2 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity2 = createNonAttachedActivityRecord(mDisplayContent); task2.addChild(activity2, 0); activity2.setOrientation(SCREEN_ORIENTATION_PORTRAIT); @@ -103,12 +103,12 @@ public class TaskStackTests extends WindowTestsBase { public void testMoveTaskToBackDifferentStackOrientation() { final Task stack = createTaskStackOnDisplay(mDisplayContent); final Task task1 = createTaskInStack(stack, 0 /* userId */); - ActivityRecord activity1 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity1 = createNonAttachedActivityRecord(mDisplayContent); task1.addChild(activity1, 0); activity1.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); final Task task2 = createTaskInStack(stack, 1 /* userId */); - ActivityRecord activity2 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity2 = createNonAttachedActivityRecord(mDisplayContent); task2.addChild(activity2, 0); activity2.setOrientation(SCREEN_ORIENTATION_PORTRAIT); assertEquals(SCREEN_ORIENTATION_PORTRAIT, stack.getOrientation()); @@ -217,7 +217,7 @@ public class TaskStackTests extends WindowTestsBase { public void testActivityAndTaskGetsProperType() { final Task stack = createTaskStackOnDisplay(mDisplayContent); final Task task1 = createTaskInStack(stack, 0 /* userId */); - ActivityRecord activity1 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity1 = createNonAttachedActivityRecord(mDisplayContent); // First activity should become standard task1.addChild(activity1, 0); @@ -225,7 +225,7 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, task1.getActivityType()); // Second activity should also become standard - ActivityRecord activity2 = createTestActivityRecord(mDisplayContent); + ActivityRecord activity2 = createNonAttachedActivityRecord(mDisplayContent); task1.addChild(activity2, WindowContainer.POSITION_TOP); assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, activity2.getActivityType()); assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, task1.getActivityType()); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index b6b3d66d9c048..0b257ee876200 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -63,7 +63,7 @@ public class TaskTests extends WindowTestsBase { public void testRemoveContainer() { final Task stackController1 = createTaskStackOnDisplay(mDisplayContent); final Task task = createTaskInStack(stackController1, 0 /* userId */); - final ActivityRecord activity = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity = createActivityRecord(mDisplayContent, task); task.removeIfPossible(); // Assert that the container was removed. @@ -76,7 +76,7 @@ public class TaskTests extends WindowTestsBase { public void testRemoveContainer_deferRemoval() { final Task stackController1 = createTaskStackOnDisplay(mDisplayContent); final Task task = createTaskInStack(stackController1, 0 /* userId */); - final ActivityRecord activity = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity = createActivityRecord(mDisplayContent, task); doReturn(true).when(task).shouldDeferRemoval(); @@ -158,8 +158,8 @@ public class TaskTests extends WindowTestsBase { public void testIsInStack() { final Task task1 = createTaskStackOnDisplay(mDisplayContent); final Task task2 = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task1); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task2); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent, task1); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, task2); assertEquals(activity1, task1.isInTask(activity1)); assertNull(task1.isInTask(activity2)); } @@ -168,9 +168,9 @@ public class TaskTests extends WindowTestsBase { public void testRemoveChildForOverlayTask() { final Task task = createTaskStackOnDisplay(mDisplayContent); final int taskId = task.mTaskId; - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task); - final ActivityRecord activity3 = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent, task); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, task); + final ActivityRecord activity3 = createActivityRecord(mDisplayContent, task); activity1.setTaskOverlay(true); activity2.setTaskOverlay(true); activity3.setTaskOverlay(true); @@ -207,8 +207,8 @@ public class TaskTests extends WindowTestsBase { final Task rootTask = createTaskStackOnDisplay(mDisplayContent); final Task leafTask1 = createTaskInStack(rootTask, 0 /* userId */); final Task leafTask2 = createTaskInStack(rootTask, 0 /* userId */); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, leafTask1); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, leafTask2); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent, leafTask1); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, leafTask2); // Check visibility of occluded tasks doReturn(false).when(leafTask1).shouldBeVisible(any()); diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java index feb509c63ae91..ef56c139e9ff7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -51,8 +51,8 @@ public class TransitionTests extends WindowTestsBase { ACTIVITY_TYPE_STANDARD, mDisplayContent); newTask.setHasBeenVisible(true); oldTask.setHasBeenVisible(false); - final ActivityRecord closing = createActivityRecordInTask(oldTask); - final ActivityRecord opening = createActivityRecordInTask(newTask); + final ActivityRecord closing = createActivityRecord(oldTask); + final ActivityRecord opening = createActivityRecord(newTask); closing.setVisible(true); closing.mVisibleRequested = false; opening.setVisible(false); @@ -102,9 +102,9 @@ public class TransitionTests extends WindowTestsBase { ACTIVITY_TYPE_STANDARD, mDisplayContent); newTask.setHasBeenVisible(true); oldTask.setHasBeenVisible(false); - final ActivityRecord closing = createActivityRecordInTask(oldTask); - final ActivityRecord opening = createActivityRecordInTask(newNestedTask); - final ActivityRecord opening2 = createActivityRecordInTask(newNestedTask2); + final ActivityRecord closing = createActivityRecord(oldTask); + final ActivityRecord opening = createActivityRecord(newNestedTask); + final ActivityRecord opening2 = createActivityRecord(newNestedTask2); closing.setVisible(true); closing.mVisibleRequested = false; opening.setVisible(false); @@ -144,8 +144,8 @@ public class TransitionTests extends WindowTestsBase { final DisplayArea tda = showTask.getDisplayArea(); showTask.setHasBeenVisible(true); showTask2.setHasBeenVisible(true); - final ActivityRecord showing = createActivityRecordInTask(showNestedTask); - final ActivityRecord showing2 = createActivityRecordInTask(showTask2); + final ActivityRecord showing = createActivityRecord(showNestedTask); + final ActivityRecord showing2 = createActivityRecord(showTask2); showing.setVisible(false); showing.mVisibleRequested = true; showing2.setVisible(false); diff --git a/services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java index 78dfd407ff4e3..45e1141304206 100644 --- a/services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/UnknownAppVisibilityControllerTest.java @@ -44,7 +44,7 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testFlow() { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); mDisplayContent.mUnknownAppVisibilityController.notifyAppResumedFinished(activity); mDisplayContent.mUnknownAppVisibilityController.notifyRelayouted(activity); @@ -56,7 +56,7 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testSkipResume() { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); activity.mLaunchTaskBehind = true; mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); mDisplayContent.mUnknownAppVisibilityController.notifyRelayouted(activity); @@ -68,8 +68,8 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testMultiple() { - final ActivityRecord activity1 = createTestActivityRecord(mDisplayContent); - final ActivityRecord activity2 = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity1 = createNonAttachedActivityRecord(mDisplayContent); + final ActivityRecord activity2 = createNonAttachedActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity1); mDisplayContent.mUnknownAppVisibilityController.notifyAppResumedFinished(activity1); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity2); @@ -84,7 +84,7 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testClear() { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); mDisplayContent.mUnknownAppVisibilityController.clear(); assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); @@ -92,7 +92,7 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testRemoveFinishingInvisibleActivityFromUnknown() { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); activity.finishing = true; activity.mVisibleRequested = true; @@ -102,7 +102,7 @@ public class UnknownAppVisibilityControllerTest extends WindowTestsBase { @Test public void testAppRemoved() { - final ActivityRecord activity = createTestActivityRecord(mDisplayContent); + final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); mDisplayContent.mUnknownAppVisibilityController.notifyLaunched(activity); mDisplayContent.mUnknownAppVisibilityController.appRemovedOrHidden(activity); assertTrue(mDisplayContent.mUnknownAppVisibilityController.allResolved()); diff --git a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java index 63367ac2badfb..a91a137ae29f2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java @@ -296,8 +296,7 @@ public class WallpaperControllerTests extends WindowTestsBase { private WindowState createWallpaperTargetWindow(DisplayContent dc) { final ActivityRecord homeActivity = new ActivityBuilder(mWm.mAtmService) - .setStack(dc.getDefaultTaskDisplayArea().getRootHomeTask()) - .setCreateTask(true) + .setTask(dc.getDefaultTaskDisplayArea().getRootHomeTask()) .build(); homeActivity.setVisibility(true); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java index f5d68894cc4fd..e0c72fb00060c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java @@ -810,7 +810,7 @@ public class WindowContainerTests extends WindowTestsBase { public void testOnDisplayChanged() { final Task stack = createTaskStackOnDisplay(mDisplayContent); final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity = createActivityRecord(mDisplayContent, task); final DisplayContent newDc = createNewDisplay(); stack.getDisplayArea().removeStack(stack); @@ -853,17 +853,17 @@ public class WindowContainerTests extends WindowTestsBase { public void testTaskCanApplyAnimation() { final Task stack = createTaskStackOnDisplay(mDisplayContent); final Task task = createTaskInStack(stack, 0 /* userId */); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, task); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, task); + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, task); + final ActivityRecord activity1 = createActivityRecord(mDisplayContent, task); verifyWindowContainerApplyAnimation(task, activity1, activity2); } @Test public void testStackCanApplyAnimation() { final Task stack = createTaskStackOnDisplay(mDisplayContent); - final ActivityRecord activity2 = createActivityRecordInTask(mDisplayContent, + final ActivityRecord activity2 = createActivityRecord(mDisplayContent, createTaskInStack(stack, 0 /* userId */)); - final ActivityRecord activity1 = createActivityRecordInTask(mDisplayContent, + final ActivityRecord activity1 = createActivityRecord(mDisplayContent, createTaskInStack(stack, 0 /* userId */)); verifyWindowContainerApplyAnimation(stack, activity1, activity2); } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java index 47e4559cbb130..78e873e2b0a35 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTraversalTests.java @@ -49,10 +49,10 @@ public class WindowContainerTraversalTests extends WindowTestsBase { @UseTestDisplay(addWindows = { W_DOCK_DIVIDER, W_INPUT_METHOD }) @Test public void testDockedDividerPosition() { - final WindowState splitScreenWindow = createWindowOnStack(null, + final WindowState splitScreenWindow = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "splitScreenWindow"); - final WindowState splitScreenSecondaryWindow = createWindowOnStack(null, + final WindowState splitScreenSecondaryWindow = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "splitScreenSecondaryWindow"); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index f1d49d5fc6c2b..7a41c02de3b68 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -389,8 +389,7 @@ public class WindowOrganizerTests extends WindowTestsBase { final TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea(); final Task stack = taskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord activity = new ActivityBuilder(mAtm).setTask(stack).build(); taskDisplayArea.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); mDisplayContent.setFocusedApp(activity); activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); @@ -428,8 +427,7 @@ public class WindowOrganizerTests extends WindowTestsBase { final TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea(); final Task stack = taskDisplayArea.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); - final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) - .setStack(stack).build(); + final ActivityRecord activity = new ActivityBuilder(mAtm).setTask(stack).build(); mDisplayContent.setFocusedApp(activity); activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); @@ -780,7 +778,7 @@ public class WindowOrganizerTests extends WindowTestsBase { }; private ActivityRecord makePipableActivity() { - final ActivityRecord record = createActivityRecord(mDisplayContent, + final ActivityRecord record = createActivityRecordWithParentTask(mDisplayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); record.info.flags |= ActivityInfo.FLAG_SUPPORTS_PICTURE_IN_PICTURE; spyOn(record); @@ -849,7 +847,7 @@ public class WindowOrganizerTests extends WindowTestsBase { final Task stack = createStack(); final Task task = createTask(stack); - final ActivityRecord record = createActivityRecordInTask(stack.mDisplayContent, task); + final ActivityRecord record = createActivityRecord(stack.mDisplayContent, task); stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW); record.setTaskDescription(new ActivityManager.TaskDescription("TestDescription")); @@ -885,10 +883,10 @@ public class WindowOrganizerTests extends WindowTestsBase { final ITaskOrganizer organizer = registerMockOrganizer(); final Task stack = createStack(); final Task task = createTask(stack); - final ActivityRecord activity = createActivityRecordInTask(stack.mDisplayContent, task); + final ActivityRecord activity = createActivityRecord(stack.mDisplayContent, task); final Task stack2 = createStack(); final Task task2 = createTask(stack2); - final ActivityRecord activity2 = createActivityRecordInTask(stack.mDisplayContent, task2); + final ActivityRecord activity2 = createActivityRecord(stack.mDisplayContent, task2); assertTrue(stack.isOrganized()); assertTrue(stack2.isOrganized()); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index 2691ae84db287..9304dc53c819f 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -17,7 +17,6 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; @@ -318,8 +317,7 @@ public class WindowStateTests extends WindowTestsBase { public void testPrepareWindowToDisplayDuringRelayout() { // Call prepareWindowToDisplayDuringRelayout for a window without FLAG_TURN_SCREEN_ON before // calling setCurrentLaunchCanTurnScreenOn for windows with flag in the same activity. - final ActivityRecord activity = createActivityRecord(mDisplayContent, - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final ActivityRecord activity = createActivityRecord(mDisplayContent); final WindowState first = createWindow(null, TYPE_APPLICATION, activity, "first"); final WindowState second = createWindow(null, TYPE_APPLICATION, activity, "second"); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 62f04a1c830a1..d5fb3c5f5e3d2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -47,7 +47,6 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.WindowContainer.POSITION_BOTTOM; -import static com.android.server.wm.WindowContainer.POSITION_TOP; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -82,7 +81,6 @@ import android.view.SurfaceControl.Transaction; import android.view.View; import android.view.WindowManager; import android.window.ITaskOrganizer; -import android.window.WindowContainerToken; import com.android.internal.util.ArrayUtils; import com.android.server.AttributeCache; @@ -248,48 +246,19 @@ class WindowTestsBase extends SystemServiceTestsBase { return createActivityRecord(dc, windowingMode, activityType); } - ActivityRecord createActivityRecord(DisplayContent dc, int windowingMode, int activityType) { - return createTestActivityRecord(dc, windowingMode, activityType); + WindowState createAppWindow(Task task, int type, String name) { + final ActivityRecord activity = createNonAttachedActivityRecord(task.getDisplayContent()); + task.addChild(activity, 0); + return createWindow(null, type, activity, name); } - ActivityRecord createTestActivityRecord(DisplayContent dc, int windowingMode, - int activityType) { - final Task stack = createTaskStackOnDisplay(windowingMode, activityType, dc); - return createTestActivityRecord(stack); - } - - /** Creates an {@link ActivityRecord} and adds it to the specified {@link Task}. */ - static ActivityRecord createActivityRecordInTask(DisplayContent dc, Task task) { - final ActivityRecord activity = createTestActivityRecord(dc); - task.addChild(activity, POSITION_TOP); - return activity; - } - - /** Creates an {@link ActivityRecord} and adds it to the specified {@link Task}. */ - static ActivityRecord createActivityRecordInTask(Task task) { - return createActivityRecordInTask(task.getDisplayContent(), task); - } - - static ActivityRecord createTestActivityRecord(DisplayContent dc) { - final ActivityRecord activity = new ActivityBuilder(dc.mWmService.mAtmService).build(); - postCreateActivitySetup(activity, dc); - return activity; - } - - static ActivityRecord createTestActivityRecord(Task stack) { - final ActivityRecord activity = new ActivityBuilder(stack.mAtmService) - .setStack(stack) - .setCreateTask(true) - .build(); - postCreateActivitySetup(activity, stack.getDisplayContent()); - return activity; - } - - private static void postCreateActivitySetup(ActivityRecord activity, DisplayContent dc) { - activity.onDisplayChanged(dc); - activity.setOccludesParent(true); - activity.setVisible(true); - activity.mVisibleRequested = true; + // TODO: Move these calls to a builder? + WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name, + IWindow iwindow) { + final WindowToken token = createWindowToken( + dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type); + return createWindow(parent, type, token, name, 0 /* ownerId */, + false /* ownerCanAddInternalSystemWindow */, iwindow); } WindowState createWindow(WindowState parent, int type, String name) { @@ -304,31 +273,15 @@ class WindowTestsBase extends SystemServiceTestsBase { : createWindow(parent, type, parent.mToken, name, ownerId); } - WindowState createWindowOnStack(WindowState parent, int windowingMode, int activityType, + WindowState createWindow(WindowState parent, int windowingMode, int activityType, int type, DisplayContent dc, String name) { final WindowToken token = createWindowToken(dc, windowingMode, activityType, type); return createWindow(parent, type, token, name); } - WindowState createAppWindow(Task task, int type, String name) { - final ActivityRecord activity = createTestActivityRecord(task.getDisplayContent()); - task.addChild(activity, 0); - return createWindow(null, type, activity, name); - } - - // TODO: Move these calls to a builder? - WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name, - IWindow iwindow) { - final WindowToken token = createWindowToken( - dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type); - return createWindow(parent, type, token, name, 0 /* ownerId */, - false /* ownerCanAddInternalSystemWindow */, iwindow); - } - WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name) { - final WindowToken token = createWindowToken( - dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type); - return createWindow(parent, type, token, name, 0 /* ownerId */); + return createWindow( + parent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, type, dc, name); } WindowState createWindow(WindowState parent, int type, DisplayContent dc, String name, @@ -446,6 +399,87 @@ class WindowTestsBase extends SystemServiceTestsBase { return task; } + /** Creates an {@link ActivityRecord}. */ + static ActivityRecord createNonAttachedActivityRecord(DisplayContent dc) { + final ActivityRecord activity = new ActivityBuilder(dc.mWmService.mAtmService) + .setOnTop(true) + .build(); + postCreateActivitySetup(activity, dc); + return activity; + } + + /** + * Creates an {@link ActivityRecord} and adds it to a new created {@link Task}. + * [Task] - [ActivityRecord] + */ + ActivityRecord createActivityRecord(DisplayContent dc) { + return createActivityRecord(dc, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + } + + /** + * Creates an {@link ActivityRecord} and adds it to a new created {@link Task}. + * [Task] - [ActivityRecord] + */ + ActivityRecord createActivityRecord(DisplayContent dc, int windowingMode, + int activityType) { + final Task task = createTaskStackOnDisplay(windowingMode, activityType, dc); + return createActivityRecord(dc, task); + } + + /** + * Creates an {@link ActivityRecord} and adds it to the specified {@link Task}. + * [Task] - [ActivityRecord] + */ + static ActivityRecord createActivityRecord(Task task) { + return createActivityRecord(task.getDisplayContent(), task); + } + + /** + * Creates an {@link ActivityRecord} and adds it to the specified {@link Task}. + * [Task] - [ActivityRecord] + */ + static ActivityRecord createActivityRecord(DisplayContent dc, Task task) { + final ActivityRecord activity = new ActivityBuilder(dc.mWmService.mAtmService) + .setTask(task) + .setOnTop(true) + .build(); + postCreateActivitySetup(activity, dc); + return activity; + } + + /** + * Creates an {@link ActivityRecord} and adds it to a new created {@link Task}. + * Then adds the new created {@link Task} to a new created parent {@link Task} + * [Task1] - [Task2] - [ActivityRecord] + */ + ActivityRecord createActivityRecordWithParentTask(DisplayContent dc, int windowingMode, + int activityType) { + final Task task = createTaskStackOnDisplay(windowingMode, activityType, dc); + return createActivityRecordWithParentTask(task); + } + + /** + * Creates an {@link ActivityRecord} and adds it to a new created {@link Task}. + * Then adds the new created {@link Task} to the specified parent {@link Task} + * [Task1] - [Task2] - [ActivityRecord] + */ + static ActivityRecord createActivityRecordWithParentTask(Task parentTask) { + final ActivityRecord activity = new ActivityBuilder(parentTask.mAtmService) + .setParentTask(parentTask) + .setCreateTask(true) + .setOnTop(true) + .build(); + postCreateActivitySetup(activity, parentTask.getDisplayContent()); + return activity; + } + + private static void postCreateActivitySetup(ActivityRecord activity, DisplayContent dc) { + activity.onDisplayChanged(dc); + activity.setOccludesParent(true); + activity.setVisible(true); + activity.mVisibleRequested = true; + } + /** Creates a {@link DisplayContent} that supports IME and adds it to the system. */ DisplayContent createNewDisplay() { return createNewDisplay(true /* supportIme */); @@ -614,19 +648,20 @@ class WindowTestsBase extends SystemServiceTestsBase { private String mProcessName = "name"; private String mAffinity; private int mUid = 12345; - private boolean mCreateTask; - private Task mStack; + private boolean mCreateTask = false; + private Task mParentTask; private int mActivityFlags; private int mLaunchMode; private int mResizeMode = RESIZE_MODE_RESIZEABLE; private float mMaxAspectRatio; private int mScreenOrientation = SCREEN_ORIENTATION_UNSPECIFIED; - private boolean mLaunchTaskBehind; + private boolean mLaunchTaskBehind = false; private int mConfigChanges; private int mLaunchedFromPid; private int mLaunchedFromUid; private WindowProcessController mWpc; private Bundle mIntentExtras; + private boolean mOnTop = false; ActivityBuilder(ActivityTaskManagerService service) { mService = service; @@ -667,8 +702,8 @@ class WindowTestsBase extends SystemServiceTestsBase { return this; } - ActivityBuilder setStack(Task stack) { - mStack = stack; + ActivityBuilder setParentTask(Task parentTask) { + mParentTask = parentTask; return this; } @@ -732,6 +767,11 @@ class WindowTestsBase extends SystemServiceTestsBase { return this; } + ActivityBuilder setOnTop(boolean onTop) { + mOnTop = onTop; + return this; + } + ActivityRecord build() { SystemServicesTestRule.checkHoldsLock(mService.mGlobalLock); try { @@ -752,11 +792,11 @@ class WindowTestsBase extends SystemServiceTestsBase { if (mCreateTask) { mTask = new TaskBuilder(mService.mStackSupervisor) .setComponent(mComponent) - .setParentTask(mStack).build(); - } else if (mTask == null && mStack != null && DisplayContent.alwaysCreateStack( - mStack.getWindowingMode(), mStack.getActivityType())) { + .setParentTask(mParentTask).build(); + } else if (mTask == null && mParentTask != null && DisplayContent.alwaysCreateStack( + mParentTask.getWindowingMode(), mParentTask.getActivityType())) { // The stack can be the task root. - mTask = mStack; + mTask = mParentTask; } Intent intent = new Intent(); @@ -800,6 +840,9 @@ class WindowTestsBase extends SystemServiceTestsBase { // to set it somewhere else since we can't mock resources. doReturn(true).when(activity).occludesParent(); doReturn(true).when(activity).fillsParent(); + if (mOnTop) { + mTask.moveToFront("createActivity"); + } mTask.addChild(activity); // Make visible by default... activity.setVisible(true); @@ -992,8 +1035,7 @@ class WindowTestsBase extends SystemServiceTestsBase { // Create child task with activity. if (mCreateActivity) { new ActivityBuilder(mSupervisor.mService) - .setCreateTask(true) - .setStack(task) + .setTask(task) .build(); if (mOnTop) { // We move the task to front again in order to regain focus after activity diff --git a/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java b/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java index dfb7280e7e540..e44d47a59fe53 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java @@ -345,16 +345,16 @@ public class ZOrderingTests extends WindowTestsBase { @Test public void testStackLayers() { final WindowState anyWindow1 = createWindow("anyWindow"); - final WindowState pinnedStackWindow = createWindowOnStack(null, WINDOWING_MODE_PINNED, + final WindowState pinnedStackWindow = createWindow(null, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "pinnedStackWindow"); - final WindowState dockedStackWindow = createWindowOnStack(null, + final WindowState dockedStackWindow = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "dockedStackWindow"); - final WindowState assistantStackWindow = createWindowOnStack(null, + final WindowState assistantStackWindow = createWindow(null, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_ASSISTANT, TYPE_BASE_APPLICATION, mDisplayContent, "assistantStackWindow"); - final WindowState homeActivityWindow = createWindowOnStack(null, WINDOWING_MODE_FULLSCREEN, + final WindowState homeActivityWindow = createWindow(null, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, TYPE_BASE_APPLICATION, mDisplayContent, "homeActivityWindow"); final WindowState anyWindow2 = createWindow("anyWindow2"); @@ -432,16 +432,16 @@ public class ZOrderingTests extends WindowTestsBase { @Test public void testDockedDividerPosition() { - final WindowState pinnedStackWindow = createWindowOnStack(null, WINDOWING_MODE_PINNED, + final WindowState pinnedStackWindow = createWindow(null, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "pinnedStackWindow"); - final WindowState splitScreenWindow = createWindowOnStack(null, + final WindowState splitScreenWindow = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "splitScreenWindow"); - final WindowState splitScreenSecondaryWindow = createWindowOnStack(null, + final WindowState splitScreenSecondaryWindow = createWindow(null, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, ACTIVITY_TYPE_STANDARD, TYPE_BASE_APPLICATION, mDisplayContent, "splitScreenSecondaryWindow"); - final WindowState assistantStackWindow = createWindowOnStack(null, + final WindowState assistantStackWindow = createWindow(null, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_ASSISTANT, TYPE_BASE_APPLICATION, mDisplayContent, "assistantStackWindow");