Removed mStackId (86/n)
mStackId is the same as mTaskId since all stacks are now tasks
Also, switch some of the users to use getRootTask()/getRootTaskId()
where it makes sense.
Bug: 80414790
Test: Existing tests pass.
Change-Id: Ie625bf8734ca01646f6f45705edf0eb240819c24
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 0e13e6c..fd514a4 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -31,7 +31,6 @@
import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_DOWN;
import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_UP;
import static android.app.ActivityOptions.ANIM_UNDEFINED;
-import static android.app.ActivityTaskManager.INVALID_STACK_ID;
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE;
@@ -1426,7 +1425,7 @@
return null;
}
ActivityRecord r = token.weakActivity.get();
- if (r == null || r.getActivityStack() == null) {
+ if (r == null || r.getRootTask() == null) {
return null;
}
return r;
@@ -2055,19 +2054,17 @@
}
}
- /**
- * @return Stack value from current task, null if there is no task.
- */
- ActivityStack getActivityStack() {
- return task != null ? task.getStack() : null;
+ /** @return Root task of this activity, null if there is no task. */
+ ActivityStack getRootTask() {
+ return task != null ? (ActivityStack) task.getRootTask() : null;
}
- int getStackId() {
- return getActivityStack() != null ? getActivityStack().mStackId : INVALID_STACK_ID;
+ int getRootTaskId() {
+ return task != null ? task.getRootTaskId() : INVALID_TASK_ID;
}
DisplayContent getDisplay() {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
return stack != null ? stack.getDisplay() : null;
}
@@ -2088,7 +2085,7 @@
mWmService.mWindowPlacerLocked.requestTraversal();
if (changed && task != null && !occludesParent) {
- getActivityStack().convertActivityToTranslucent(this);
+ getRootTask().convertActivityToTranslucent(this);
}
// Always ensure visibility if this activity doesn't occlude parent, so the
// {@link #returningOptions} of the activity under this one can be applied in
@@ -2123,7 +2120,7 @@
}
boolean isInStackLocked() {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
return stack != null && stack.isInStackLocked(this) != null;
}
@@ -2325,7 +2322,7 @@
return false;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
Slog.w(TAG, "moveActivityStackToFront: invalid task or stack: activity="
+ this + " task=" + task);
@@ -2456,7 +2453,7 @@
return FINISH_RESULT_CANCELLED;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
final boolean mayAdjustTop = (isState(RESUMED) || stack.mResumedActivity == null)
&& stack.isFocusedStackOnDisplay();
final boolean shouldAdjustGlobalFocus = mayAdjustTop
@@ -2497,7 +2494,7 @@
final DisplayContent display = stack.getDisplay();
next = display.topRunningActivity();
if (next != null) {
- display.positionStackAtTop(next.getActivityStack(),
+ display.positionStackAtTop(next.getRootTask(),
false /* includingParents */, "finish-display-top");
}
}
@@ -2666,7 +2663,7 @@
mStackSupervisor.mStoppingActivities.remove(this);
mStackSupervisor.mGoingToSleepActivities.remove(this);
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
final DisplayContent display = getDisplay();
// TODO(b/137329632): Exclude current activity when looking for the next one with
// DisplayContent#topRunningActivity().
@@ -2824,7 +2821,7 @@
boolean safelyDestroy(String reason) {
if (isDestroyable()) {
if (DEBUG_SWITCH) {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
Slog.v(TAG_SWITCH, "Safely destroying " + this + " in state " + getState()
+ " resumed=" + stack.mResumedActivity
+ " pausing=" + stack.mPausingActivity
@@ -3612,7 +3609,7 @@
}
final boolean isSleeping() {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
return stack != null ? stack.shouldSleepActivities() : mAtmService.isSleepingLocked();
}
@@ -4449,7 +4446,7 @@
return visibleIgnoringKeyguard;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
return false;
}
@@ -4471,7 +4468,7 @@
}
boolean shouldBeVisible() {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
return false;
}
@@ -4492,7 +4489,7 @@
// If this activity is paused, tell it to now show its window.
if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
"Making visible and scheduling visibility: " + this);
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
try {
if (stack.mTranslucentActivityWaiting != null) {
updateOptionsLocked(returningOptions);
@@ -4578,7 +4575,7 @@
if (DEBUG_VISIBILITY) {
Slog.v(TAG_VISIBILITY, "Resume visible activity, " + this);
}
- return getActivityStack().resumeTopActivityUncheckedLocked(activeActivity /* prev */,
+ return getRootTask().resumeTopActivityUncheckedLocked(activeActivity /* prev */,
null /* options */);
} else if (shouldPauseActivity(activeActivity)) {
if (DEBUG_VISIBILITY) {
@@ -4643,7 +4640,7 @@
*/
private boolean shouldBeResumed(ActivityRecord activeActivity) {
return shouldMakeActive(activeActivity) && isFocusable()
- && getActivityStack().getVisibility(activeActivity) == STACK_VISIBILITY_VISIBLE
+ && getRootTask().getVisibility(activeActivity) == STACK_VISIBILITY_VISIBLE
&& canResumeByCompat();
}
@@ -4672,7 +4669,7 @@
// ActivityStack#ensureActivitiesVisible will bring the activity to a proper
// active state.
if (!isState(STARTED, RESUMED, PAUSED, STOPPED, STOPPING)
- || getActivityStack().mTranslucentActivityWaiting != null) {
+ || getRootTask().mTranslucentActivityWaiting != null) {
return false;
}
@@ -4769,7 +4766,7 @@
mStackSupervisor.reportResumedActivityLocked(this);
resumeKeyDispatchingLocked();
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
mStackSupervisor.mNoAnimActivities.clear();
// Mark the point when the activity is resuming
@@ -4862,7 +4859,7 @@
void stopIfPossible() {
if (DEBUG_SWITCH) Slog.d(TAG_SWITCH, "Stopping: " + this);
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (isNoHistory()) {
if (!finishing) {
if (!stack.shouldSleepActivities()) {
@@ -4919,7 +4916,7 @@
void activityStopped(Bundle newIcicle, PersistableBundle newPersistentState,
CharSequence description) {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
final boolean isStopping = mState == STOPPING;
if (!isStopping && mState != RESTARTING_PROCESS) {
Slog.i(TAG, "Activity reported stop, but no longer stopping: " + this);
@@ -4969,7 +4966,7 @@
mStackSupervisor.mStoppingActivities.add(this);
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
// If we already have a few activities waiting to stop, then give up on things going idle
// and start clearing them out. Or if r is the last of activity of the last task the stack
// will be empty and must be cleared immediately.
@@ -5005,7 +5002,7 @@
return false;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
return false;
}
@@ -5021,7 +5018,7 @@
void finishLaunchTickingLocked() {
launchTickTime = 0;
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
return;
}
@@ -5491,13 +5488,13 @@
static ActivityRecord isInStackLocked(IBinder token) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
- return (r != null) ? r.getActivityStack().isInStackLocked(r) : null;
+ return (r != null) ? r.getRootTask().isInStackLocked(r) : null;
}
static ActivityStack getStackLocked(IBinder token) {
final ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r != null) {
- return r.getActivityStack();
+ return r.getRootTask();
}
return null;
}
@@ -5507,7 +5504,7 @@
* {@link android.view.Display#INVALID_DISPLAY} if not attached.
*/
int getDisplayId() {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack == null) {
return INVALID_DISPLAY;
}
@@ -5519,7 +5516,7 @@
// This would be redundant.
return false;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (isState(RESUMED) || stack == null || this == stack.mPausingActivity || !mHaveState
|| !stopped) {
// We're not ready for this kind of thing.
@@ -6755,7 +6752,7 @@
private void applyAspectRatio(Rect outBounds, Rect containingAppBounds,
Rect containingBounds) {
final float maxAspectRatio = info.maxAspectRatio;
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
final float minAspectRatio = info.minAspectRatio;
if (task == null || stack == null || (inMultiWindowMode() && !shouldUseSizeCompatMode())
@@ -6861,7 +6858,7 @@
*/
boolean ensureActivityConfiguration(int globalChanges, boolean preserveWindow,
boolean ignoreVisibility) {
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
if (stack.mConfigWillChange) {
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
"Skipping config check (will change): " + this);
@@ -7406,7 +7403,7 @@
if (!getTurnScreenOnFlag()) {
return false;
}
- final ActivityStack stack = getActivityStack();
+ final ActivityStack stack = getRootTask();
return stack != null &&
stack.checkKeyguardVisibility(this, true /* shouldBeVisible */, true /* isTop */);
}
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index 60e0f51e..78e681f 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -277,9 +277,6 @@
int mCurrentUser;
- /** Unique identifier */
- final int mStackId;
-
/** For comparison with DisplayContent bounds. */
private Rect mTmpRect = new Rect();
private Rect mTmpRect2 = new Rect();
@@ -633,7 +630,6 @@
_realActivitySuspended, userSetupComplete, minWidth, minHeight, info, _voiceSession,
_voiceInteractor, stack);
- mStackId = mTaskId;
mDockedStackMinimizeThickness = mWmService.mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.docked_stack_minimize_thickness);
EventLogTags.writeWmStackCreated(id);
@@ -1118,7 +1114,7 @@
return null;
}
final Task task = r.getTask();
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
if (stack != null && task.mChildren.contains(r) && mChildren.contains(task)) {
if (stack != this) Slog.w(TAG,
"Illegal state! task does not point to stack it is in.");
@@ -1347,7 +1343,7 @@
private boolean containsActivityFromStack(List<ActivityRecord> rs) {
for (ActivityRecord r : rs) {
- if (r.getActivityStack() == this) {
+ if (r.getRootTask() == this) {
return true;
}
}
@@ -1873,7 +1869,7 @@
final DisplayContent displayContent = getDisplay();
if (displayContent == null) {
throw new IllegalStateException("Stack is not attached to any display, stackId="
- + mStackId);
+ + getRootTaskId());
}
final int flags = displayContent.mDisplay.getFlags();
@@ -2592,7 +2588,7 @@
return false;
}
final ActivityStack targetStack = toFrontTask != null
- ? toFrontTask.getStack() : toFrontActivity.getActivityStack();
+ ? toFrontTask.getStack() : toFrontActivity.getRootTask();
if (targetStack != null && targetStack.isActivityTypeAssistant()) {
// Ensure the task/activity being brought forward is not the assistant
return false;
@@ -3073,7 +3069,7 @@
}
ActivityRecord topActivity = getDisplay().topRunningActivity();
- ActivityStack topStack = topActivity.getActivityStack();
+ ActivityStack topStack = topActivity.getRootTask();
if (topStack != null && topStack != this && topActivity.isState(RESUMED)) {
// The new top activity is already resumed, so there's a good chance that nothing will
// get resumed below. So, update visibility now in case the transition is closed
@@ -3102,7 +3098,7 @@
return;
}
- Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "stack.resize_" + mStackId);
+ Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "stack.resize_" + getRootTaskId());
mAtmService.deferWindowLayout();
try {
// Update override configurations of all tasks in the stack.
@@ -3219,7 +3215,7 @@
boolean dump(FileDescriptor fd, PrintWriter pw, boolean dumpAll, boolean dumpClient,
String dumpPackage, boolean needSep) {
- pw.println(" Stack #" + mStackId
+ pw.println(" Stack #" + getRootTaskId()
+ ": type=" + activityTypeToString(getActivityType())
+ " mode=" + windowingModeToString(getWindowingMode()));
pw.println(" isSleeping=" + shouldSleepActivities());
@@ -4484,7 +4480,7 @@
@Override
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
- pw.println(prefix + "mStackId=" + mStackId);
+ pw.println(prefix + "mStackId=" + getRootTaskId());
pw.println(prefix + "mDeferRemoval=" + mDeferRemoval);
pw.println(prefix + "mBounds=" + getRawBounds().toShortString());
if (mMinimizeAmount != 0f) {
@@ -4515,14 +4511,6 @@
mAnimatingActivityRegistry.dump(pw, "AnimatingApps:", prefix);
}
- String getName() {
- return toShortString();
- }
-
- public String toShortString() {
- return "Stack=" + mStackId;
- }
-
/**
* For docked workspace (or workspace that's side-by-side to the docked), provides
* information which side of the screen was the dock anchored.
@@ -4863,7 +4851,7 @@
@WindowTraceLogLevel int logLevel) {
final long token = proto.start(fieldId);
dumpDebugInnerStackOnly(proto, STACK, logLevel);
- proto.write(com.android.server.am.ActivityStackProto.ID, mStackId);
+ proto.write(com.android.server.am.ActivityStackProto.ID, getRootTaskId());
forAllTasks((t) -> {
t.dumpDebugInner(proto, com.android.server.am.ActivityStackProto.TASKS, logLevel);
@@ -4891,7 +4879,7 @@
final long token = proto.start(fieldId);
super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
- proto.write(StackProto.ID, mStackId);
+ proto.write(StackProto.ID, getRootTaskId());
forAllTasks((t) -> {
t.dumpDebugInnerTaskOnly(proto, StackProto.TASKS, logLevel);
}, true /* traverseTopToBottom */, this);
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index f2ce7e8..120ae86 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -824,7 +824,7 @@
false /* markFrozenIfConfigChanged */, true /* deferResume */);
}
- if (r.getActivityStack().checkKeyguardVisibility(r, true /* shouldBeVisible */,
+ if (r.getRootTask().checkKeyguardVisibility(r, true /* shouldBeVisible */,
true /* isTop */) && r.allowMoveToFront()) {
// We only set the visibility to true if the activity is not being launched in
// background, and is allowed to be visible based on keyguard state. This avoids
@@ -1891,13 +1891,13 @@
// TODO: Look into changing users to this method to DisplayContent.resolveWindowingMode()
ActivityStack getReparentTargetStack(Task task, ActivityStack stack, boolean toTop) {
final ActivityStack prevStack = task.getStack();
- final int stackId = stack.mStackId;
+ final int rootTaskId = stack.mTaskId;
final boolean inMultiWindowMode = stack.inMultiWindowMode();
// Check that we aren't reparenting to the same stack that the task is already in
- if (prevStack != null && prevStack.mStackId == stackId) {
+ if (prevStack != null && prevStack.mTaskId == rootTaskId) {
Slog.w(TAG, "Can not reparent to same stack, task=" + task
- + " already in stackId=" + stackId);
+ + " already in stackId=" + rootTaskId);
return prevStack;
}
@@ -1912,7 +1912,7 @@
// multi-display.
if (stack.getDisplayId() != DEFAULT_DISPLAY && !mService.mSupportsMultiDisplay) {
throw new IllegalArgumentException("Device doesn't support multi-display, can not"
- + " reparent task=" + task + " to stackId=" + stackId);
+ + " reparent task=" + task + " to stackId=" + rootTaskId);
}
// Ensure that we aren't trying to move into a freeform stack without freeform support
@@ -1993,7 +1993,7 @@
void activitySleptLocked(ActivityRecord r) {
mGoingToSleepActivities.remove(r);
- final ActivityStack s = r.getActivityStack();
+ final ActivityStack s = r.getRootTask();
if (s != null) {
s.checkReadyForSleep();
} else {
@@ -2029,7 +2029,7 @@
// A resumed activity cannot be stopping. remove from list
mStoppingActivities.remove(r);
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
if (stack.getDisplay().allResumedActivitiesComplete()) {
mRootWindowContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS);
// Make sure activity & window visibility should be identical
@@ -2082,7 +2082,7 @@
if (DEBUG_STATES) Slog.v(TAG, "Stopping " + s + ": nowVisible=" + s.nowVisible
+ " animating=" + animating + " finishing=" + s.finishing);
- final ActivityStack stack = s.getActivityStack();
+ final ActivityStack stack = s.getRootTask();
final boolean shouldSleepOrShutDown = stack != null
? stack.shouldSleepOrShutDownActivities()
: mService.isSleepingOrShuttingDownLocked();
@@ -2473,7 +2473,7 @@
final ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r != null) {
r.finishRelaunching();
- if (r.getActivityStack().shouldSleepOrShutDownActivities()) {
+ if (r.getRootTask().shouldSleepOrShutDownActivities()) {
r.setSleeping(true, true);
}
}
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 6587226..457a305 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -937,7 +937,7 @@
}
final ActivityStack resultStack = resultRecord == null
- ? null : resultRecord.getActivityStack();
+ ? null : resultRecord.getRootTask();
if (err != START_SUCCESS) {
if (resultRecord != null) {
@@ -1425,7 +1425,7 @@
* @return the stack where the successful started activity resides.
*/
private @Nullable ActivityStack handleStartResult(@NonNull ActivityRecord started, int result) {
- final ActivityStack currentStack = started.getActivityStack();
+ final ActivityStack currentStack = started.getRootTask();
ActivityStack startedActivityStack = currentStack != null ? currentStack : mTargetStack;
if (ActivityManager.isStartResultSuccessful(result)) {
@@ -1446,7 +1446,7 @@
// If we are not able to proceed, disassociate the activity from the task. Leaving an
// activity in an incomplete state can lead to issues, such as performing operations
// without a window container.
- final ActivityStack stack = mStartActivity.getActivityStack();
+ final ActivityStack stack = mStartActivity.getRootTask();
if (stack != null) {
mStartActivity.finishIfPossible("startActivity", true /* oomAdj */);
}
@@ -2231,7 +2231,7 @@
return;
}
if (!mSourceRecord.finishing) {
- mSourceStack = mSourceRecord.getActivityStack();
+ mSourceStack = mSourceRecord.getRootTask();
return;
}
@@ -2314,7 +2314,7 @@
* @return {@link ActivityRecord} brought to front.
*/
private void setTargetStackIfNeeded(ActivityRecord intentActivity) {
- mTargetStack = intentActivity.getActivityStack();
+ mTargetStack = intentActivity.getRootTask();
mTargetStack.mLastPausedActivity = null;
// If the target task is not in the front, then we need to bring it to the front...
// except... well, with SINGLE_TASK_LAUNCH it's not entirely clear. We'd like to have
@@ -2371,7 +2371,7 @@
}
// Need to update mTargetStack because if task was moved out of it, the original stack may
// be destroyed.
- mTargetStack = intentActivity.getActivityStack();
+ mTargetStack = intentActivity.getRootTask();
mSupervisor.handleNonResizableTaskIfNeeded(intentActivity.getTask(),
WINDOWING_MODE_UNDEFINED, DEFAULT_DISPLAY, mTargetStack);
}
@@ -2422,10 +2422,11 @@
return;
}
- final ActivityStack stack = task.getStack();
- if (stack != null && stack.inPinnedWindowingMode()) {
- mService.animateResizePinnedStack(stack.mStackId, bounds, -1);
+ final Task rootTask = task.getRootTask();
+ if (rootTask != null && rootTask.inPinnedWindowingMode()) {
+ mService.animateResizePinnedStack(rootTask.mTaskId, bounds, -1);
} else {
+ // TODO: I don't believe it is possible to reach this else condition anymore...
task.setBounds(bounds);
}
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 8491bc2..9f4c581 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -1612,7 +1612,7 @@
if (mController != null) {
// Find the first activity that is not finishing.
final ActivityRecord next =
- r.getActivityStack().topRunningActivity(token, INVALID_TASK_ID);
+ r.getRootTask().topRunningActivity(token, INVALID_TASK_ID);
if (next != null) {
// ask watcher if this is allowed
boolean resumeOK = true;
@@ -2037,7 +2037,7 @@
synchronized (mGlobalLock) {
ActivityRecord r = mRootWindowContainer.isInAnyStack(token);
if (r != null) {
- r.getActivityStack().notifyActivityDrawnLocked(r);
+ r.getRootTask().notifyActivityDrawnLocked(r);
}
}
}
@@ -2073,7 +2073,7 @@
synchronized (mGlobalLock) {
ActivityStack focusedStack = getTopDisplayFocusedStack();
if (focusedStack != null) {
- return mRootWindowContainer.getStackInfo(focusedStack.mStackId);
+ return mRootWindowContainer.getStackInfo(focusedStack.mTaskId);
}
return null;
}
@@ -2175,7 +2175,7 @@
synchronized (mGlobalLock) {
final ActivityRecord srec = ActivityRecord.forTokenLocked(token);
if (srec != null) {
- return srec.getActivityStack().shouldUpRecreateTaskLocked(srec, destAffinity);
+ return srec.getRootTask().shouldUpRecreateTaskLocked(srec, destAffinity);
}
}
return false;
@@ -2188,7 +2188,7 @@
synchronized (mGlobalLock) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (r != null) {
- return r.getActivityStack().navigateUpTo(
+ return r.getRootTask().navigateUpTo(
r, destIntent, resultCode, resultData);
}
return false;
@@ -2354,7 +2354,7 @@
if (r == null) {
return;
}
- ActivityStack stack = r.getActivityStack();
+ ActivityStack stack = r.getRootTask();
if (stack != null && stack.isSingleTaskInstance()) {
// Single-task stacks are used for activities which are presented in floating
// windows above full screen activities. Instead of directly finishing the
@@ -2582,7 +2582,7 @@
r, resultWho, requestCode);
// TODO: This should probably only loop over the task since you need to be in the
// same task to return results.
- r.getActivityStack().forAllActivities(c);
+ r.getRootTask().forAllActivities(c);
c.recycle();
updateOomAdj();
@@ -3215,7 +3215,7 @@
+ ainfo.applicationInfo.uid + ", calling uid=" + callingUid);
}
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
final Task task = stack.createTask(
mStackSupervisor.getNextTaskIdForUser(r.mUserId), ainfo, intent, !ON_TOP);
if (!mRecentTasks.addToBottom(task)) {
@@ -3551,7 +3551,7 @@
+ token);
}
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
if (stack == null) {
throw new IllegalStateException("toggleFreeformWindowingMode: the activity "
+ "doesn't have a stack");
@@ -4235,14 +4235,14 @@
}
private boolean isInPictureInPictureMode(ActivityRecord r) {
- if (r == null || r.getActivityStack() == null || !r.inPinnedWindowingMode()
- || r.getActivityStack().isInStackLocked(r) == null) {
+ if (r == null || r.getRootTask() == null || !r.inPinnedWindowingMode()
+ || r.getRootTask().isInStackLocked(r) == null) {
return false;
}
// If we are animating to fullscreen then we have already dispatched the PIP mode
// changed, so we should reflect that check here as well.
- final ActivityStack taskStack = r.getActivityStack();
+ final ActivityStack taskStack = r.getRootTask();
return !taskStack.isAnimatingBoundsToFullscreen();
}
@@ -4281,7 +4281,7 @@
r.pictureInPictureArgs.getSourceRectHint());
mRootWindowContainer.moveActivityToPinnedStack(
r, sourceBounds, aspectRatio, "enterPictureInPictureMode");
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
stack.setPictureInPictureAspectRatio(aspectRatio);
stack.setPictureInPictureActions(actions);
MetricsLoggerWrapper.logPictureInPictureEnter(mContext,
@@ -4326,7 +4326,7 @@
// If the activity is already in picture-in-picture, update the pinned stack now
// if it is not already expanding to fullscreen. Otherwise, the arguments will
// be used the next time the activity enters PiP
- final ActivityStack stack = r.getActivityStack();
+ final ActivityStack stack = r.getRootTask();
if (!stack.isAnimatingBoundsToFullscreen()) {
stack.setPictureInPictureAspectRatio(
r.pictureInPictureArgs.getAspectRatio());
@@ -4923,7 +4923,7 @@
Slog.i(TAG, "Moving " + r.shortComponentName + " from display " + r.getDisplayId()
+ " to main display for VR");
mRootWindowContainer.moveStackToDisplay(
- r.getStackId(), DEFAULT_DISPLAY, true /* toTop */);
+ r.getRootTaskId(), DEFAULT_DISPLAY, true /* toTop */);
}
mH.post(() -> {
if (!mVrController.onVrModeChanged(r)) {
@@ -6752,7 +6752,7 @@
int requestCode, int resultCode, Intent data) {
synchronized (mGlobalLock) {
final ActivityRecord r = ActivityRecord.isInStackLocked(activityToken);
- if (r != null && r.getActivityStack() != null) {
+ if (r != null && r.getRootTask() != null) {
r.sendResult(callingUid, resultWho, requestCode, resultCode, data);
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 707c773..ed782c2 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2772,7 +2772,7 @@
proto.write(SINGLE_TASK_INSTANCE, mSingleTaskInstance);
final ActivityStack focusedStack = getFocusedStack();
if (focusedStack != null) {
- proto.write(FOCUSED_STACK_ID, focusedStack.mStackId);
+ proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
if (focusedActivity != null) {
focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
@@ -5655,8 +5655,8 @@
if (currentFocusedStack != prevFocusedStack) {
mLastFocusedStack = prevFocusedStack;
EventLogTags.writeWmFocusedStack(mRootWindowContainer.mCurrentUser, mDisplayId,
- currentFocusedStack == null ? -1 : currentFocusedStack.getStackId(),
- mLastFocusedStack == null ? -1 : mLastFocusedStack.getStackId(),
+ currentFocusedStack == null ? -1 : currentFocusedStack.getRootTaskId(),
+ mLastFocusedStack == null ? -1 : mLastFocusedStack.getRootTaskId(),
updateLastFocusedStackReason);
}
}
@@ -5664,10 +5664,10 @@
onStackOrderChanged(stack);
}
- ActivityStack getStack(int stackId) {
+ ActivityStack getStack(int rootTaskId) {
for (int i = getStackCount() - 1; i >= 0; --i) {
final ActivityStack stack = getStackAt(i);
- if (stack.mStackId == stackId) {
+ if (stack.getRootTaskId() == rootTaskId) {
return stack;
}
}
@@ -6704,7 +6704,7 @@
public void dumpStacks(PrintWriter pw) {
for (int i = getStackCount() - 1; i >= 0; --i) {
- pw.print(getStackAt(i).mStackId);
+ pw.print(getStackAt(i).getRootTaskId());
if (i > 0) {
pw.print(",");
}
diff --git a/services/core/java/com/android/server/wm/LaunchParamsController.java b/services/core/java/com/android/server/wm/LaunchParamsController.java
index 03e1322..a9820ef 100644
--- a/services/core/java/com/android/server/wm/LaunchParamsController.java
+++ b/services/core/java/com/android/server/wm/LaunchParamsController.java
@@ -138,7 +138,7 @@
try {
if (mTmpParams.hasPreferredDisplay()
&& mTmpParams.mPreferredDisplayId != task.getStack().getDisplay().mDisplayId) {
- mService.moveStackToDisplay(task.getStackId(), mTmpParams.mPreferredDisplayId);
+ mService.moveStackToDisplay(task.getRootTaskId(), mTmpParams.mPreferredDisplayId);
}
if (mTmpParams.hasWindowingMode()
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 8202833..3eddd85 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -1656,7 +1656,7 @@
// Only resume home activity if isn't finishing.
if (r != null && !r.finishing) {
r.moveFocusableActivityToTop(myReason);
- return resumeFocusedStacksTopActivities(r.getActivityStack(), prev, null);
+ return resumeFocusedStacksTopActivities(r.getRootTask(), prev, null);
}
return startHomeOnDisplay(mCurrentUser, myReason, displayId);
}
@@ -1980,7 +1980,7 @@
}
boolean switchUser(int userId, UserState uss) {
- final int focusStackId = getTopDisplayFocusedStack().getStackId();
+ final int focusStackId = getTopDisplayFocusedStack().getRootTaskId();
// We dismiss the docked stack whenever we switch users.
final ActivityStack dockedStack = getDefaultDisplay().getSplitScreenPrimaryStack();
if (dockedStack != null) {
@@ -1994,7 +1994,7 @@
mUserStackInFront.put(mCurrentUser, focusStackId);
final int restoreStackId =
- mUserStackInFront.get(userId, getDefaultDisplay().getHomeStack().mStackId);
+ mUserStackInFront.get(userId, getDefaultDisplay().getHomeStack().getRootTaskId());
mCurrentUser = userId;
mStackSupervisor.mStartingUsers.add(uss);
@@ -2034,8 +2034,8 @@
*/
void updateUserStack(int userId, ActivityStack stack) {
if (userId != mCurrentUser) {
- mUserStackInFront.put(userId, stack != null ? stack.getStackId()
- : getDefaultDisplay().getHomeStack().mStackId);
+ mUserStackInFront.put(userId, stack != null ? stack.getRootTaskId()
+ : getDefaultDisplay().getHomeStack().getRootTaskId());
}
}
@@ -2108,7 +2108,7 @@
String reason) {
mService.deferWindowLayout();
- final DisplayContent display = r.getActivityStack().getDisplay();
+ final DisplayContent display = r.getRootTask().getDisplay();
try {
final Task task = r.getTask();
@@ -2124,13 +2124,13 @@
final ActivityStack stack;
if (singleActivity) {
- stack = r.getActivityStack();
+ stack = r.getRootTask();
} else {
// In the case of multiple activities, we will create a new stack for it and then
// move the PIP activity into the stack.
// We will then perform a windowing mode change for both scenarios.
stack = display.createStack(
- r.getActivityStack().getRequestedOverrideWindowingMode(),
+ r.getRootTask().getRequestedOverrideWindowingMode(),
r.getActivityType(), ON_TOP, r.info, r.intent);
// There are multiple activities in the task and moving the top activity should
// reveal/leave the other activities in their original task.
@@ -2398,7 +2398,7 @@
ActivityManager.StackInfo info = new ActivityManager.StackInfo();
stack.getBounds(info.bounds);
info.displayId = display.mDisplayId;
- info.stackId = stack.mStackId;
+ info.stackId = stack.mTaskId;
info.stackToken = stack.mRemoteToken;
info.userId = stack.mCurrentUser;
info.visible = stack.shouldBeVisible(null);
@@ -2853,7 +2853,7 @@
stack = candidateTask.getStack();
}
if (stack == null && r != null) {
- stack = r.getActivityStack();
+ stack = r.getRootTask();
}
if (stack != null) {
display = stack.getDisplay();
@@ -3244,7 +3244,7 @@
if (resumedActivity == null || !resumedActivity.idle) {
if (DEBUG_STATES) {
Slog.d(TAG_STATES, "allResumedActivitiesIdle: stack="
- + stack.mStackId + " " + resumedActivity + " not idle");
+ + stack.getRootTaskId() + " " + resumedActivity + " not idle");
}
return false;
}
@@ -3599,7 +3599,7 @@
// TODO(b/111541062): Update tests to look for resumed activities on all displays
final ActivityStack focusedStack = getTopDisplayFocusedStack();
if (focusedStack != null) {
- proto.write(FOCUSED_STACK_ID, focusedStack.mStackId);
+ proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
if (focusedActivity != null) {
focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 9e6cb68..c52966b 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -526,7 +526,7 @@
ActivityStack stack) {
super(atmService.mWindowManager);
- EventLogTags.writeWmTaskCreated(_taskId, stack != null ? stack.mStackId : INVALID_STACK_ID);
+ EventLogTags.writeWmTaskCreated(_taskId, stack != null ? getRootTaskId() : INVALID_TASK_ID);
mAtmService = atmService;
mStackSupervisor = atmService.mStackSupervisor;
mRootWindowContainer = mAtmService.mRootWindowContainer;
@@ -1080,7 +1080,7 @@
// the display, so we should probably consolidate it there instead.
if (getParent() == null && mDisplayContent != null) {
- EventLogTags.writeWmStackRemoved(getStackId());
+ EventLogTags.writeWmStackRemoved(getRootTaskId());
mDisplayContent = null;
mWmService.mWindowPlacerLocked.requestTraversal();
}
@@ -2344,17 +2344,27 @@
return dc != null ? dc.mDisplayId : INVALID_DISPLAY;
}
+ // TODO: Migrate callers to getRootTask()
ActivityStack getStack() {
- final WindowContainer parent = getParent();
- return (ActivityStack) (parent instanceof ActivityStack ? parent : this);
+ return (ActivityStack) getRootTask();
}
- /**
- * @return Id of current stack, {@link ActivityTaskManager#INVALID_STACK_ID} if no stack is set.
- */
- int getStackId() {
- final ActivityStack stack = getStack();
- return stack != null ? stack.mStackId : INVALID_STACK_ID;
+ /** @return Id of root task. */
+ int getRootTaskId() {
+ return getRootTask().mTaskId;
+ }
+
+ Task getRootTask() {
+ final WindowContainer parent = getParent();
+ if (parent == null) return this;
+
+ final Task parentTask = parent.asTask();
+ return parentTask == null ? this : parentTask.getRootTask();
+ }
+
+ // TODO(task-merge): Figure out what's the right thing to do for places that used it.
+ boolean isRootTask() {
+ return getRootTask() == this;
}
int getDescendantTaskCount() {
@@ -2736,7 +2746,7 @@
// No need to check if the mode is allowed if it's leaving dragResize
if (dragResizing && !DragResizeMode.isModeAllowedForStack(getStack(), dragResizeMode)) {
throw new IllegalArgumentException("Drag resize mode not allow for stack stackId="
- + getStack().mStackId + " dragResizeMode=" + dragResizeMode);
+ + getRootTaskId() + " dragResizeMode=" + dragResizeMode);
}
mDragResizing = dragResizing;
mDragResizeMode = dragResizeMode;
@@ -3010,11 +3020,6 @@
return mTaskDescription;
}
- // TODO(task-merge): Figure out what's the right thing to do for places that used it.
- boolean isRootTask() {
- return getParent() == null || getParent().asTask() == null;
- }
-
@Override
boolean fillsParent() {
return matchParentBounds();
@@ -3167,7 +3172,7 @@
void fillTaskInfo(TaskInfo info) {
getNumRunningActivities(mReuseActivitiesReport);
info.userId = mUserId;
- info.stackId = getStackId();
+ info.stackId = getRootTaskId();
info.taskId = mTaskId;
info.displayId = getDisplayId();
info.isRunning = getTopNonFinishingActivity() != null;
@@ -3298,7 +3303,7 @@
if (mRootProcess != null) {
pw.print(prefix); pw.print("mRootProcess="); pw.println(mRootProcess);
}
- pw.print(prefix); pw.print("taskId=" + mTaskId); pw.println(" stackId=" + getStackId());
+ pw.print(prefix); pw.print("taskId=" + mTaskId); pw.println(" stackId=" + getRootTaskId());
pw.print(prefix + "hasBeenVisible=" + hasBeenVisible);
pw.print(" mResizeMode=" + ActivityInfo.resizeModeToString(mResizeMode));
pw.print(" mSupportsPictureInPicture=" + mSupportsPictureInPicture);
@@ -3315,7 +3320,7 @@
sb.append(" U=");
sb.append(mUserId);
sb.append(" StackId=");
- sb.append(getStackId());
+ sb.append(getRootTaskId());
sb.append(" sz=");
sb.append(getChildCount());
sb.append('}');
@@ -3358,7 +3363,7 @@
forAllActivities((r) -> {
r.dumpDebug(proto, ACTIVITIES);
});
- proto.write(STACK_ID, getStackId());
+ proto.write(STACK_ID, getRootTaskId());
if (mLastNonFullscreenBounds != null) {
mLastNonFullscreenBounds.dumpDebug(proto, LAST_NON_FULLSCREEN_BOUNDS);
}
diff --git a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
index 688fe12..2dde0ba 100644
--- a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
+++ b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
@@ -350,7 +350,7 @@
void notifyActivityPinned(ActivityRecord r) {
mHandler.removeMessages(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG);
final Message msg = mHandler.obtainMessage(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG,
- r.getTask().mTaskId, r.getStackId(), r.packageName);
+ r.getTask().mTaskId, r.getRootTaskId(), r.packageName);
msg.sendingUid = r.mUserId;
forAllLocalListeners(mNotifyActivityPinned, msg);
msg.sendToTarget();
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index c755e60..812942e 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -618,15 +618,15 @@
// Compare the z-order of ActivityStacks if both activities landed on same display.
if (display == topDisplay
- && mPreQTopResumedActivity.getActivityStack().compareTo(
- activity.getActivityStack()) <= 0) {
+ && mPreQTopResumedActivity.getRootTask().compareTo(
+ activity.getRootTask()) <= 0) {
canUpdate = true;
}
if (canUpdate) {
// Make sure the previous top activity in the process no longer be resumed.
if (mPreQTopResumedActivity != null && mPreQTopResumedActivity.isState(RESUMED)) {
- final ActivityStack stack = mPreQTopResumedActivity.getActivityStack();
+ final ActivityStack stack = mPreQTopResumedActivity.getRootTask();
if (stack != null) {
stack.startPausingLocked(false /* userLeaving */, false /* uiSleeping */,
activity);
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index aef79a5..6173488 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -16,7 +16,7 @@
package com.android.server.wm;
-import static android.app.ActivityTaskManager.INVALID_STACK_ID;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.MODE_DEFAULT;
import static android.app.AppOpsManager.OP_NONE;
@@ -1055,7 +1055,7 @@
}
}
- final ActivityStack stack = getStack();
+ final ActivityStack stack = getRootTask();
if (inPinnedWindowingMode() && stack != null
&& stack.lastAnimatingBoundsWasToFullscreen()) {
// PIP edge case: When going from pinned to fullscreen, we apply a
@@ -1469,12 +1469,10 @@
return mActivityRecord != null ? mActivityRecord.getTask() : null;
}
- ActivityStack getStack() {
- Task task = getTask();
+ ActivityStack getRootTask() {
+ final Task task = getTask();
if (task != null) {
- if (task.getStack() != null) {
- return task.getStack();
- }
+ return (ActivityStack) task.getRootTask();
}
// Some system windows (e.g. "Power off" dialog) don't have a task, but we would still
// associate them with some stack to enable dimming.
@@ -2229,7 +2227,7 @@
return false;
}
- final ActivityStack stack = getStack();
+ final ActivityStack stack = getRootTask();
if (stack != null && stack.shouldIgnoreInput()) {
// Ignore when the stack shouldn't receive input event.
// (i.e. the minimized stack in split screen mode.)
@@ -2472,7 +2470,7 @@
if (task != null) {
task.getDimBounds(mTmpRect);
} else {
- getStack().getDimBounds(mTmpRect);
+ getRootTask().getDimBounds(mTmpRect);
}
}
if (inFreeformWindowingMode()) {
@@ -3563,12 +3561,12 @@
return mTmpRect;
}
- private int getStackId() {
- final ActivityStack stack = getStack();
+ private int getRootTaskId() {
+ final ActivityStack stack = getRootTask();
if (stack == null) {
- return INVALID_STACK_ID;
+ return INVALID_TASK_ID;
}
- return stack.mStackId;
+ return stack.mTaskId;
}
private void dispatchResized(Rect frame, Rect contentInsets,
@@ -3753,7 +3751,7 @@
super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
writeIdentifierToProto(proto, IDENTIFIER);
proto.write(DISPLAY_ID, getDisplayId());
- proto.write(STACK_ID, getStackId());
+ proto.write(STACK_ID, getRootTaskId());
mAttrs.dumpDebug(proto, ATTRIBUTES);
mGivenContentInsets.dumpDebug(proto, GIVEN_CONTENT_INSETS);
mWindowFrames.dumpDebug(proto, WINDOW_FRAMES);
@@ -3795,10 +3793,9 @@
@Override
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
- final ActivityStack stack = getStack();
pw.print(prefix + "mDisplayId=" + getDisplayId());
- if (stack != null) {
- pw.print(" stackId=" + stack.mStackId);
+ if (getRootTask() != null) {
+ pw.print(" rootTaskId=" + getRootTaskId());
}
pw.println(" mSession=" + mSession
+ " mClient=" + mClient.asBinder());
@@ -5271,7 +5268,7 @@
outPoint.offset(-parentBounds.left, -parentBounds.top);
}
- ActivityStack stack = getStack();
+ ActivityStack stack = getRootTask();
// If we have stack outsets, that means the top-left
// will be outset, and we need to inset ourselves
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 6189fbd..069ee4f 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1013,7 +1013,7 @@
mSurfaceController.deferTransactionUntil(mSurfaceController.mSurfaceControl,
mWin.getFrameNumber());
} else {
- final ActivityStack stack = mWin.getStack();
+ final ActivityStack stack = mWin.getRootTask();
mTmpPos.x = 0;
mTmpPos.y = 0;
if (stack != null) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index c60ca48..af3a3fe 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -136,7 +136,7 @@
public void testStackCleanupOnTaskRemoval() {
mStack.removeChild(mTask, null /*reason*/);
// Stack should be gone on task removal.
- assertNull(mService.mRootWindowContainer.getStack(mStack.mStackId));
+ assertNull(mService.mRootWindowContainer.getStack(mStack.mTaskId));
}
@Test
@@ -1136,7 +1136,7 @@
@Test
public void testRemoveFromHistory() {
- final ActivityStack stack = mActivity.getActivityStack();
+ final ActivityStack stack = mActivity.getRootTask();
final Task task = mActivity.getTask();
mActivity.removeFromHistory("test");
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index 9e54f40..f702d5d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -153,7 +153,7 @@
assertThat((Object) task2.getStack()).isInstanceOf(ActivityStack.class);
mStarter.updateBounds(task2, bounds);
- verify(mService, times(1)).animateResizePinnedStack(eq(task2.getStack().mStackId),
+ verify(mService, times(1)).animateResizePinnedStack(eq(task2.getRootTaskId()),
eq(bounds), anyInt());
// In the case of no animation, the stack and task bounds should be set immediately.
@@ -446,13 +446,13 @@
new ActivityBuilder(mService).setCreateTask(true).build();
final ActivityRecord splitSecondReusableActivity =
new ActivityBuilder(mService).setCreateTask(true).build();
- splitPrimaryFocusActivity.getActivityStack()
+ splitPrimaryFocusActivity.getRootTask()
.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
- splitSecondReusableActivity.getActivityStack()
+ splitSecondReusableActivity.getRootTask()
.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
// Set focus back to primary.
- splitPrimaryFocusActivity.getActivityStack().moveToFront("testSplitScreenDeliverToTop");
+ splitPrimaryFocusActivity.getRootTask().moveToFront("testSplitScreenDeliverToTop");
// Start activity and delivered new intent.
starter.getIntent().setComponent(splitSecondReusableActivity.mActivityComponent);
@@ -477,18 +477,18 @@
new ActivityBuilder(mService).setCreateTask(true).build();
final ActivityRecord splitPrimaryFocusActivity =
new ActivityBuilder(mService).setCreateTask(true).build();
- splitPrimaryFocusActivity.getActivityStack()
+ splitPrimaryFocusActivity.getRootTask()
.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
- splitSecondReusableActivity.getActivityStack()
+ splitSecondReusableActivity.getRootTask()
.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
- splitSecondTopActivity.getActivityStack()
+ splitSecondTopActivity.getRootTask()
.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
// Make it on top of split-screen-secondary.
- splitSecondTopActivity.getActivityStack().moveToFront("testSplitScreenTaskToFront");
+ splitSecondTopActivity.getRootTask().moveToFront("testSplitScreenTaskToFront");
// Let primary stack has focus.
- splitPrimaryFocusActivity.getActivityStack().moveToFront("testSplitScreenTaskToFront");
+ splitPrimaryFocusActivity.getRootTask().moveToFront("testSplitScreenTaskToFront");
// Start activity and delivered new intent.
starter.getIntent().setComponent(splitSecondReusableActivity.mActivityComponent);
@@ -732,13 +732,13 @@
final ActivityRecord activity = new ActivityBuilder(mService)
.setCreateTask(true).build();
new ActivityBuilder(mService)
- .setStack(activity.getActivityStack())
+ .setStack(activity.getRootTask())
.setCreateTask(true).build();
// Create a top finishing activity.
final ActivityRecord finishingTopActivity = new ActivityBuilder(mService)
.setCreateTask(true).build();
- finishingTopActivity.getActivityStack().moveToFront("finishingTopActivity");
+ finishingTopActivity.getRootTask().moveToFront("finishingTopActivity");
assertEquals(finishingTopActivity, mRootWindowContainer.topRunningActivity());
finishingTopActivity.finishing = true;
@@ -997,8 +997,8 @@
assertThat(outActivity[0].inSplitScreenWindowingMode()).isFalse();
// Move activity to split-screen-primary stack and make sure it has the focus.
- top.getActivityStack().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
- top.getActivityStack().moveToFront("testWindowingModeOptionsLaunchAdjacent");
+ top.getRootTask().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
+ top.getRootTask().moveToFront("testWindowingModeOptionsLaunchAdjacent");
// Activity must landed on split-screen-secondary when launch adjacent.
starter.setActivityOptions(options.toBundle())
diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
index cf1f0a8..8b3a6cf 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
@@ -284,7 +284,7 @@
doNothing().when(mService).moveStackToDisplay(anyInt(), anyInt());
mController.layoutTask(task, null /* windowLayout */);
- verify(mService, times(1)).moveStackToDisplay(eq(task.getStackId()),
+ verify(mService, times(1)).moveStackToDisplay(eq(task.getRootTaskId()),
eq(params.mPreferredDisplayId));
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
index 7e42c62..ec8e402 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
@@ -97,7 +97,7 @@
.setStack(recentsStack)
.build();
ActivityRecord topActivity = new ActivityBuilder(mService).setCreateTask(true).build();
- topActivity.getActivityStack().moveToFront("testRecentsActivityVisiblility");
+ topActivity.getRootTask().moveToFront("testRecentsActivityVisiblility");
doCallRealMethod().when(mRootWindowContainer).ensureActivitiesVisible(
any() /* starting */, anyInt() /* configChanges */,
@@ -187,7 +187,7 @@
recentActivity.app = null;
// Start an activity on top.
- new ActivityBuilder(mService).setCreateTask(true).build().getActivityStack().moveToFront(
+ new ActivityBuilder(mService).setCreateTask(true).build().getRootTask().moveToFront(
"testRestartRecentsActivity");
doCallRealMethod().when(mRootWindowContainer).ensureActivitiesVisible(
@@ -229,7 +229,7 @@
new ActivityBuilder(mService)
.setCreateTask(true)
.build()
- .getActivityStack()
+ .getRootTask()
.moveToFront("Activity start");
// Start the recents animation.
diff --git a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
index ea8d082..07dfc50 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
@@ -638,7 +638,7 @@
final ActivityRecord resolverActivity = mRootWindowContainer.topRunningActivity();
assertEquals(info, resolverActivity.info);
- assertEquals(ACTIVITY_TYPE_STANDARD, resolverActivity.getActivityStack().getActivityType());
+ assertEquals(ACTIVITY_TYPE_STANDARD, resolverActivity.getRootTask().getActivityType());
}
/**
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
index 8970571..7aaf3fb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
@@ -85,7 +85,7 @@
mPositioner.register(mDisplayContent, win);
- win.getStack().setWindowingMode(WINDOWING_MODE_FREEFORM);
+ win.getRootTask().setWindowingMode(WINDOWING_MODE_FREEFORM);
}
@After
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
index 6d0b54f..5cf9c44 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
@@ -278,7 +278,7 @@
spyOn(stack);
doReturn(true).when(controller).isMinimizedDock();
doReturn(true).when(controller).isHomeStackResizable();
- doReturn(stack).when(appWindow).getStack();
+ doReturn(stack).when(appWindow).getRootTask();
// Make sure canBeImeTarget is false due to shouldIgnoreInput is true;
assertFalse(appWindow.canBeImeTarget());