Merge "Refactor WindowTestsBase to use one-task depth activities"
This commit is contained in:
committed by
Android (Google) Code Review
commit
5b3573cfe4
@@ -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 */);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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 */));
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user