Merge "Refactor WindowTestsBase to use one-task depth activities"

This commit is contained in:
TreeHugger Robot
2020-11-03 05:22:46 +00:00
committed by Android (Google) Code Review
36 changed files with 370 additions and 392 deletions

View File

@@ -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 */);

View File

@@ -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();

View File

@@ -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");

View File

@@ -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");

View File

@@ -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<ActivityRecord> occludedActivities = new ArrayList<>();
final Consumer<ActivityRecord> 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());

View File

@@ -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.

View File

@@ -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 =

View File

@@ -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();

View File

@@ -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<ActivityRecord> 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<ActivityRecord> 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<ActivityRecord> 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<ActivityRecord> 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 */));
}

View File

@@ -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.

View File

@@ -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

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);

View File

@@ -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}

View File

@@ -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();

View File

@@ -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());
}
/**

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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());

View File

@@ -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());

View File

@@ -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);

View File

@@ -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());

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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");

View File

@@ -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());

View File

@@ -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");

View File

@@ -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

View File

@@ -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");