diff options
20 files changed, 121 insertions, 123 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index fd514a425af1..d1c8448f2a4a 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2223,7 +2223,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A boolean isCurrentAppLocked = mAtmService.getLockTaskModeState() != LOCK_TASK_MODE_NONE; final DisplayContent display = getDisplay(); - boolean hasPinnedStack = display != null && display.hasPinnedStack(); + boolean hasPinnedStack = display != null && display.hasPinnedTask(); // Don't return early if !isNotLocked, since we want to throw an exception if the activity // is in an incorrect state boolean isNotLockedOrOnKeyguard = !isKeyguardLocked && !isCurrentAppLocked; @@ -2669,7 +2669,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // DisplayContent#topRunningActivity(). final ActivityRecord next = display.topRunningActivity(); final boolean isLastStackOverEmptyHome = - next == null && stack.isFocusedStackOnDisplay() && display.getHomeStack() != null; + next == null && stack.isFocusedStackOnDisplay() && display.getRootHomeTask() != null; if (isLastStackOverEmptyHome) { // Don't destroy activity immediately if this is the last activity on the display and // the display contains home stack. Although there is no next activity at the moment, @@ -3824,7 +3824,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Notify the pinned stack upon all windows drawn. If there was an animation in // progress then this signal will resume that animation. - final ActivityStack pinnedStack = mDisplayContent.getPinnedStack(); + final ActivityStack pinnedStack = mDisplayContent.getRootPinnedTask(); if (pinnedStack != null) { pinnedStack.onAllWindowsDrawn(); } @@ -6712,7 +6712,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void savePinnedStackBounds() { // Leaving PiP to fullscreen, save the snap fraction based on the pre-animation bounds // for the next re-entry into PiP (assuming the activity is not hidden or destroyed) - final ActivityStack pinnedStack = mDisplayContent.getPinnedStack(); + final ActivityStack pinnedStack = mDisplayContent.getRootPinnedTask(); if (pinnedStack == null) return; final Rect stackBounds; if (pinnedStack.lastAnimatingBoundsWasToFullscreen()) { diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 78e681f0ae3d..942be8409db2 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -728,11 +728,11 @@ class ActivityStack extends Task implements BoundsAnimationTarget { setBounds(newBounds); newBounds.set(newBounds); } else if (overrideWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) { - Rect dockedBounds = display.getSplitScreenPrimaryStack().getBounds(); + Rect dockedBounds = display.getRootSplitScreenPrimaryTask().getBounds(); final boolean isMinimizedDock = display.mDisplayContent.getDockedDividerController().isMinimizedDock(); if (isMinimizedDock) { - Task topTask = display.getSplitScreenPrimaryStack().getTopMostTask(); + Task topTask = display.getRootSplitScreenPrimaryTask().getTopMostTask(); if (topTask != null) { dockedBounds = topTask.getBounds(); } @@ -826,7 +826,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { final int currentOverrideMode = getRequestedOverrideWindowingMode(); final DisplayContent display = getDisplay(); final Task topTask = getTopMostTask(); - final ActivityStack splitScreenStack = display.getSplitScreenPrimaryStack(); + final ActivityStack splitScreenStack = display.getRootSplitScreenPrimaryTask(); int windowingMode = preferredWindowingMode; if (preferredWindowingMode == WINDOWING_MODE_UNDEFINED && isTransientWindowingMode(currentMode)) { @@ -847,7 +847,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { windowingMode = mRestoreOverrideWindowingMode; } - final boolean alreadyInSplitScreenMode = display.hasSplitScreenPrimaryStack(); + final boolean alreadyInSplitScreenMode = display.hasSplitScreenPrimaryTask(); // Don't send non-resizeable notifications if the windowing mode changed was a side effect // of us entering split-screen mode. @@ -864,7 +864,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { // warning toast about it. mAtmService.getTaskChangeNotificationController() .notifyActivityDismissingDockedStack(); - final ActivityStack primarySplitStack = display.getSplitScreenPrimaryStack(); + final ActivityStack primarySplitStack = display.getRootSplitScreenPrimaryTask(); primarySplitStack.setWindowingModeInSurfaceTransaction(WINDOWING_MODE_UNDEFINED, false /* animate */, false /* showRecents */, false /* enteringSplitScreenMode */, true /* deferEnsuringVisibility */, @@ -1161,7 +1161,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { final ActivityStack topFullScreenStack = display.getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); if (topFullScreenStack != null) { - final ActivityStack primarySplitScreenStack = display.getSplitScreenPrimaryStack(); + final ActivityStack primarySplitScreenStack = display.getRootSplitScreenPrimaryTask(); if (display.getIndexOf(topFullScreenStack) > display.getIndexOf(primarySplitScreenStack)) { primarySplitScreenStack.moveToFront(reason + " splitScreenToTop"); @@ -1559,7 +1559,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { // focus). Also if there is an active pinned stack - we always want to notify it about // task stack changes, because its positioning may depend on it. if (mStackSupervisor.mAppVisibilitiesChangedSinceLastPause - || (getDisplay() != null && getDisplay().hasPinnedStack())) { + || (getDisplay() != null && getDisplay().hasPinnedTask())) { mAtmService.getTaskChangeNotificationController().notifyTaskStackChanged(); mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = false; } @@ -4719,7 +4719,7 @@ class ActivityStack extends Task implements BoundsAnimationTarget { // activity early for the recents animation prior to the PiP animation starting, there // is no subsequent all-drawn signal. In this case, we can skip the pause when the home // stack is already visible and drawn. - final ActivityStack homeStack = mDisplayContent.getHomeStack(); + final ActivityStack homeStack = mDisplayContent.getRootHomeTask(); if (homeStack == null) { return true; } diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index 120ae866ad33..2c0f3e65f198 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -1582,7 +1582,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { } final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getSplitScreenPrimaryStack(); + mRootWindowContainer.getDefaultDisplay().getRootSplitScreenPrimaryTask(); if (stack == null) { Slog.w(TAG, "resizeDockedStackLocked: docked stack not found"); return; @@ -1670,7 +1670,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { void resizePinnedStackLocked(Rect pinnedBounds, Rect tempPinnedTaskBounds) { // TODO(multi-display): The display containing the stack should be passed in. final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getPinnedStack(); + mRootWindowContainer.getDefaultDisplay().getRootPinnedTask(); if (stack == null) { Slog.w(TAG, "resizePinnedStackLocked: pinned stack not found"); return; @@ -2395,7 +2395,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { final boolean isSecondaryDisplayPreferred = (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY); final boolean inSplitScreenMode = actualStack != null - && actualStack.getDisplay().hasSplitScreenPrimaryStack(); + && actualStack.getDisplay().hasSplitScreenPrimaryTask(); if (((!inSplitScreenMode && preferredWindowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) && !isSecondaryDisplayPreferred) || !task.isActivityTypeStandardOrUndefined()) { return; @@ -2444,7 +2444,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { // we need to move it to top of fullscreen stack, otherwise it will be covered. final ActivityStack dockedStack = - task.getStack().getDisplay().getSplitScreenPrimaryStack(); + task.getStack().getDisplay().getRootSplitScreenPrimaryTask(); if (dockedStack != null) { // Display a warning toast that we tried to put an app that doesn't support // split-screen in split-screen. diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 457a305964b3..26812f462b3f 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1365,7 +1365,7 @@ class ActivityStarter { break; case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: final ActivityStack homeStack = - startedActivityStack.getDisplay().getHomeStack(); + startedActivityStack.getDisplay().getRootHomeTask(); if (homeStack != null && homeStack.shouldBeVisible(null /* starting */)) { mService.mWindowManager.showRecentApps(); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 9f4c58174169..31b7c688d685 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -4080,7 +4080,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { try { synchronized (mGlobalLock) { final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getSplitScreenPrimaryStack(); + mRootWindowContainer.getDefaultDisplay().getRootSplitScreenPrimaryTask(); if (stack == null) { Slog.w(TAG, "dismissSplitScreenMode: primary split-screen stack not found."); return; @@ -4121,7 +4121,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { try { synchronized (mGlobalLock) { final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getPinnedStack(); + mRootWindowContainer.getDefaultDisplay().getRootPinnedTask(); if (stack == null) { Slog.w(TAG, "dismissPip: pinned stack not found."); return; diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index ed782c2bf5d3..f3ae6ec835f4 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1947,27 +1947,25 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo return (mDisplay.getFlags() & FLAG_PRIVATE) != 0; } - ActivityStack getHomeStack() { - return mTaskContainers.getHomeStack(); + ActivityStack getRootHomeTask() { + return mTaskContainers.getRootHomeTask(); } - /** - * @return The primary split-screen stack, and {@code null} otherwise. - */ - ActivityStack getSplitScreenPrimaryStack() { - return mTaskContainers.getSplitScreenPrimaryStack(); + /** @return The primary split-screen task, and {@code null} otherwise. */ + ActivityStack getRootSplitScreenPrimaryTask() { + return mTaskContainers.getRootSplitScreenPrimaryTask(); } - boolean hasSplitScreenPrimaryStack() { - return getSplitScreenPrimaryStack() != null; + boolean hasSplitScreenPrimaryTask() { + return getRootSplitScreenPrimaryTask() != null; } - ActivityStack getPinnedStack() { - return mTaskContainers.getPinnedStack(); + ActivityStack getRootPinnedTask() { + return mTaskContainers.getRootPinnedTask(); } - boolean hasPinnedStack() { - return mTaskContainers.getPinnedStack() != null; + boolean hasPinnedTask() { + return mTaskContainers.getRootPinnedTask() != null; } /** @@ -2054,7 +2052,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // If there was no pinned stack, we still need to notify the controller of the display info // update as a result of the config change. - if (mPinnedStackControllerLocked != null && !hasPinnedStack()) { + if (mPinnedStackControllerLocked != null && !hasPinnedTask()) { mPinnedStackControllerLocked.onDisplayInfoChanged(getDisplayInfo()); } } @@ -2447,7 +2445,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } amendWindowTapExcludeRegion(mTouchExcludeRegion); // TODO(multi-display): Support docked stacks on secondary displays. - if (mDisplayId == DEFAULT_DISPLAY && getSplitScreenPrimaryStack() != null) { + if (mDisplayId == DEFAULT_DISPLAY && getRootSplitScreenPrimaryTask() != null) { mDividerControllerLocked.getTouchRegion(mTmpRect); mTmpRegion.set(mTmpRect); mTouchExcludeRegion.op(mTmpRegion, Op.UNION); @@ -2645,7 +2643,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo final WindowState imeWin = mInputMethodWindow; final boolean imeVisible = imeWin != null && imeWin.isVisibleLw() && imeWin.isDisplayedLw() && !mDividerControllerLocked.isImeHideRequested(); - final ActivityStack dockedStack = getSplitScreenPrimaryStack(); + final ActivityStack dockedStack = getRootSplitScreenPrimaryTask(); final boolean dockVisible = dockedStack != null; final Task topDockedTask = dockVisible ? dockedStack.getTask((t) -> true): null; final ActivityStack imeTargetStack = mWmService.getImeFocusStackLocked(); @@ -2956,15 +2954,15 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo pw.println(); // Dump stack references - final ActivityStack homeStack = getHomeStack(); + final ActivityStack homeStack = getRootHomeTask(); if (homeStack != null) { pw.println(prefix + "homeStack=" + homeStack.getName()); } - final ActivityStack pinnedStack = getPinnedStack(); + final ActivityStack pinnedStack = getRootPinnedTask(); if (pinnedStack != null) { pw.println(prefix + "pinnedStack=" + pinnedStack.getName()); } - final ActivityStack splitScreenPrimaryStack = getSplitScreenPrimaryStack(); + final ActivityStack splitScreenPrimaryStack = getRootSplitScreenPrimaryTask(); if (splitScreenPrimaryStack != null) { pw.println(prefix + "splitScreenPrimaryStack=" + splitScreenPrimaryStack.getName()); } @@ -4171,11 +4169,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo */ SurfaceControl mSplitScreenDividerAnchor = null; - // Cached reference to some special stacks we tend to get a lot so we don't need to loop + // Cached reference to some special tasks we tend to get a lot so we don't need to loop // through the list to find them. - private ActivityStack mHomeStack = null; - private ActivityStack mPinnedStack = null; - private ActivityStack mSplitScreenPrimaryStack = null; + private ActivityStack mRootHomeTask = null; + private ActivityStack mRootPinnedTask = null; + private ActivityStack mRootSplitScreenPrimaryTask = null; TaskContainers(WindowManagerService service) { super(service); @@ -4187,12 +4185,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo */ ActivityStack getStack(int windowingMode, int activityType) { if (activityType == ACTIVITY_TYPE_HOME) { - return mHomeStack; + return mRootHomeTask; } if (windowingMode == WINDOWING_MODE_PINNED) { - return mPinnedStack; + return mRootPinnedTask; } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { - return mSplitScreenPrimaryStack; + return mRootSplitScreenPrimaryTask; } for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) { final ActivityStack stack = mTaskContainers.getChildAt(i); @@ -4219,19 +4217,19 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo return mTaskContainers.mChildren.indexOf(stack); } - ActivityStack getHomeStack() { - if (mHomeStack == null && mDisplayId == DEFAULT_DISPLAY) { + ActivityStack getRootHomeTask() { + if (mRootHomeTask == null && mDisplayId == DEFAULT_DISPLAY) { Slog.e(TAG_WM, "getHomeStack: Returning null from this=" + this); } - return mHomeStack; + return mRootHomeTask; } - ActivityStack getPinnedStack() { - return mPinnedStack; + ActivityStack getRootPinnedTask() { + return mRootPinnedTask; } - ActivityStack getSplitScreenPrimaryStack() { - return mSplitScreenPrimaryStack; + ActivityStack getRootSplitScreenPrimaryTask() { + return mRootSplitScreenPrimaryTask; } ArrayList<Task> getVisibleTasks() { @@ -4247,7 +4245,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo void onStackWindowingModeChanged(ActivityStack stack) { removeStackReferenceIfNeeded(stack); addStackReferenceIfNeeded(stack); - if (stack == mPinnedStack && getTopStack() != stack) { + if (stack == mRootPinnedTask && getTopStack() != stack) { // Looks like this stack changed windowing mode to pinned. Move it to the top. positionChildAt(POSITION_TOP, stack, false /* includingParents */); } @@ -4255,36 +4253,36 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private void addStackReferenceIfNeeded(ActivityStack stack) { if (stack.isActivityTypeHome()) { - if (mHomeStack != null) { - if (!stack.isDescendantOf(mHomeStack)) { + if (mRootHomeTask != null) { + if (!stack.isDescendantOf(mRootHomeTask)) { throw new IllegalArgumentException("addStackReferenceIfNeeded: home stack=" - + mHomeStack + " already exist on display=" + this + + mRootHomeTask + " already exist on display=" + this + " stack=" + stack); } } else { - mHomeStack = stack; + mRootHomeTask = stack; } } final int windowingMode = stack.getWindowingMode(); if (windowingMode == WINDOWING_MODE_PINNED) { - if (mPinnedStack != null) { - if (!stack.isDescendantOf(mPinnedStack)) { + if (mRootPinnedTask != null) { + if (!stack.isDescendantOf(mRootPinnedTask)) { throw new IllegalArgumentException( - "addStackReferenceIfNeeded: pinned stack=" + mPinnedStack + "addStackReferenceIfNeeded: pinned stack=" + mRootPinnedTask + " already exist on display=" + this + " stack=" + stack); } } else { - mPinnedStack = stack; + mRootPinnedTask = stack; } } else if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) { - if (mSplitScreenPrimaryStack != null) { - if (!stack.isDescendantOf(mSplitScreenPrimaryStack)) { + if (mRootSplitScreenPrimaryTask != null) { + if (!stack.isDescendantOf(mRootSplitScreenPrimaryTask)) { throw new IllegalArgumentException("addStackReferenceIfNeeded:" - + " split-screen-primary" + " stack=" + mSplitScreenPrimaryStack + + " split-screen-primary" + " stack=" + mRootSplitScreenPrimaryTask + " already exist on display=" + this + " stack=" + stack); } } else { - mSplitScreenPrimaryStack = stack; + mRootSplitScreenPrimaryTask = stack; mDisplayContent.onSplitScreenModeActivated(); mDividerControllerLocked.notifyDockedStackExistsChanged(true); } @@ -4292,12 +4290,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } void removeStackReferenceIfNeeded(ActivityStack stack) { - if (stack == mHomeStack) { - mHomeStack = null; - } else if (stack == mPinnedStack) { - mPinnedStack = null; - } else if (stack == mSplitScreenPrimaryStack) { - mSplitScreenPrimaryStack = null; + if (stack == mRootHomeTask) { + mRootHomeTask = null; + } else if (stack == mRootPinnedTask) { + mRootPinnedTask = null; + } else if (stack == mRootSplitScreenPrimaryTask) { + mRootSplitScreenPrimaryTask = null; mDisplayContent.onSplitScreenModeDismissed(); // Re-set the split-screen create mode whenever the split-screen stack is removed. mWmService.setDockedStackCreateStateLocked( @@ -4399,9 +4397,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo int minPosition = POSITION_BOTTOM; if (stack.isAlwaysOnTop()) { - if (hasPinnedStack()) { + if (hasPinnedTask()) { // Always-on-top stacks go below the pinned stack. - maxPosition = getStacks().indexOf(mPinnedStack) - 1; + maxPosition = getStacks().indexOf(mRootPinnedTask) - 1; } // Always-on-top stacks need to be above all other stacks. minPosition = belowAlwaysOnTopPosition != @@ -4526,11 +4524,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // docked stack is visible...except for the home stack if the docked stack is // minimized and it actually set something and the bounds is different from the // display. - if (mHomeStack != null && mHomeStack.isVisible() + if (mRootHomeTask != null && mRootHomeTask.isVisible() && mDividerControllerLocked.isMinimizedDock() && !(mDividerControllerLocked.isHomeStackResizable() - && mHomeStack.matchParentBounds())) { - final int orientation = mHomeStack.getOrientation(); + && mRootHomeTask.matchParentBounds())) { + final int orientation = mRootHomeTask.getOrientation(); if (orientation != SCREEN_ORIENTATION_UNSET) { return orientation; } @@ -4915,7 +4913,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private boolean skipImeWindowsDuringTraversal(DisplayContent dc) { // We skip IME windows so they're processed just above their target, except // in split-screen mode where we process the IME containers above the docked divider. - return dc.mInputMethodTarget != null && !dc.hasSplitScreenPrimaryStack(); + return dc.mInputMethodTarget != null && !dc.hasSplitScreenPrimaryTask(); } /** Like {@link #forAllWindows}, but ignores {@link #skipImeWindowsDuringTraversal} */ @@ -6027,7 +6025,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } finally { final ActivityStack topFullscreenStack = getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); - final ActivityStack homeStack = getHomeStack(); + final ActivityStack homeStack = getRootHomeTask(); if (topFullscreenStack != null && homeStack != null && !isTopStack(homeStack)) { // Whenever split-screen is dismissed we want the home stack directly behind the // current top fullscreen stack so it shows up when the top stack is finished. @@ -6045,7 +6043,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mAtmService.deferWindowLayout(); try { // Adjust the windowing mode of any affected by split-screen to split-screen secondary. - final ActivityStack splitScreenPrimaryStack = getSplitScreenPrimaryStack(); + final ActivityStack splitScreenPrimaryStack = getRootSplitScreenPrimaryTask(); for (int i = getStackCount() - 1; i >= 0; --i) { final ActivityStack otherStack = getStackAt(i); if (otherStack == splitScreenPrimaryStack @@ -6174,7 +6172,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - final boolean inSplitScreenMode = hasSplitScreenPrimaryStack(); + final boolean inSplitScreenMode = hasSplitScreenPrimaryTask(); if (!inSplitScreenMode && windowingMode == WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY) { // Switch to the display's windowing mode if we are not in split-screen mode and we are @@ -6420,7 +6418,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // If default display is in split-window mode, set windowing mode of the stack // to split-screen secondary. Otherwise, set the windowing mode to undefined by // default to let stack inherited the windowing mode from the new display. - final int windowingMode = toDisplay.hasSplitScreenPrimaryStack() + final int windowingMode = toDisplay.hasSplitScreenPrimaryTask() ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY : WINDOWING_MODE_UNDEFINED; stack.reparent(toDisplay, true /* onTop */); @@ -6589,7 +6587,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } void moveHomeStackToFront(String reason) { - final ActivityStack homeStack = getHomeStack(); + final ActivityStack homeStack = getRootHomeTask(); if (homeStack != null) { homeStack.moveToFront(reason); } @@ -6615,7 +6613,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo @Nullable ActivityRecord getHomeActivityForUser(int userId) { - final ActivityStack homeStack = getHomeStack(); + final ActivityStack homeStack = getRootHomeTask(); if (homeStack == null) { return null; } diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index b59c4e38214b..f90f22423a2d 100644 --- a/services/core/java/com/android/server/wm/DisplayRotation.java +++ b/services/core/java/com/android/server/wm/DisplayRotation.java @@ -582,7 +582,7 @@ public class DisplayRotation { // In the presence of the PINNED stack or System Alert windows we unfortunately can not // seamlessly rotate. - if (mDisplayContent.hasPinnedStack() || mDisplayContent.hasAlertWindowSurfaces()) { + if (mDisplayContent.hasPinnedTask() || mDisplayContent.hasAlertWindowSurfaces()) { return false; } diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index f2d8404ede29..872379efa389 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -255,7 +255,7 @@ public class DockedStackDividerController { } boolean isHomeStackResizable() { - final ActivityStack homeStack = mDisplayContent.getHomeStack(); + final ActivityStack homeStack = mDisplayContent.getRootHomeTask(); if (homeStack == null) { return false; } @@ -371,7 +371,7 @@ public class DockedStackDividerController { if (mWindow == null) { return; } - ActivityStack stack = mDisplayContent.getSplitScreenPrimaryStack(); + ActivityStack stack = mDisplayContent.getRootSplitScreenPrimaryTask(); // If the stack is invisible, we policy force hide it in WindowAnimator.shouldForceHide final boolean visible = stack != null; @@ -415,7 +415,7 @@ public class DockedStackDividerController { } void positionDockedStackedDivider(Rect frame) { - ActivityStack stack = mDisplayContent.getSplitScreenPrimaryStack(); + ActivityStack stack = mDisplayContent.getRootSplitScreenPrimaryTask(); if (stack == null) { // Unfortunately we might end up with still having a divider, even though the underlying // stack was already removed. This is because we are on AM thread and the removal of the @@ -524,7 +524,7 @@ public class DockedStackDividerController { // If a primary stack was just created, it will not have access to display content at // this point so pass it from here to get a valid dock side. final ActivityStack stack = - mDisplayContent.getSplitScreenPrimaryStack(); + mDisplayContent.getRootSplitScreenPrimaryTask(); mOriginalDockedSide = stack.getDockSideForDisplay(mDisplayContent); return; } @@ -560,7 +560,7 @@ public class DockedStackDividerController { long animDuration = 0; if (animate) { final ActivityStack stack = - mDisplayContent.getSplitScreenPrimaryStack(); + mDisplayContent.getRootSplitScreenPrimaryTask(); final long transitionDuration = isAnimationMaximizing() ? mDisplayContent.mAppTransition.getLastClipRevealTransitionDuration() : DEFAULT_APP_TRANSITION_DURATION; @@ -615,7 +615,7 @@ public class DockedStackDividerController { mDockedStackListeners.register(listener); notifyDockedDividerVisibilityChanged(wasVisible()); notifyDockedStackExistsChanged( - mDisplayContent.getSplitScreenPrimaryStack() != null); + mDisplayContent.getRootSplitScreenPrimaryTask() != null); notifyDockedStackMinimizedChanged(mMinimizedDock, false /* animate */, isHomeStackResizable()); notifyAdjustedForImeChanged(mAdjustedForIme, 0 /* animDuration */); @@ -633,7 +633,7 @@ public class DockedStackDividerController { final ActivityStack stack = targetWindowingMode != WINDOWING_MODE_UNDEFINED ? mDisplayContent.getTopStackInWindowingMode(targetWindowingMode) : null; - final ActivityStack dockedStack = mDisplayContent.getSplitScreenPrimaryStack(); + final ActivityStack dockedStack = mDisplayContent.getRootSplitScreenPrimaryTask(); boolean visibleAndValid = visible && stack != null && dockedStack != null; // Ensure an old dim that was shown for the docked stack divider is removed so we don't end @@ -701,10 +701,10 @@ public class DockedStackDividerController { } void checkMinimizeChanged(boolean animate) { - if (mDisplayContent.getSplitScreenPrimaryStack() == null) { + if (mDisplayContent.getRootSplitScreenPrimaryTask() == null) { return; } - final ActivityStack homeStack = mDisplayContent.getHomeStack(); + final ActivityStack homeStack = mDisplayContent.getRootHomeTask(); if (homeStack == null) { return; } @@ -873,7 +873,7 @@ public class DockedStackDividerController { } private boolean setMinimizedDockedStack(boolean minimized) { - final ActivityStack stack = mDisplayContent.getSplitScreenPrimaryStack(); + final ActivityStack stack = mDisplayContent.getRootSplitScreenPrimaryTask(); notifyDockedStackMinimizedChanged(minimized, false /* animate */, isHomeStackResizable()); return stack != null && stack.setAdjustedForMinimizedDock(minimized ? 1f : 0f); } @@ -923,7 +923,7 @@ public class DockedStackDividerController { } private boolean animateForMinimizedDockedStack(long now) { - final ActivityStack stack = mDisplayContent.getSplitScreenPrimaryStack(); + final ActivityStack stack = mDisplayContent.getRootSplitScreenPrimaryTask(); if (!mAnimationStarted) { mAnimationStarted = true; mAnimationStartTime = now; diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java index 7db30f6009b4..ad65e101fd15 100644 --- a/services/core/java/com/android/server/wm/KeyguardController.java +++ b/services/core/java/com/android/server/wm/KeyguardController.java @@ -407,7 +407,7 @@ class KeyguardController { // stack since it will be complicated/risky to try to put the activity on top // of the lock screen in the right fullscreen configuration. final ActivityStack stack = - mRootWindowContainer.getDefaultDisplay().getSplitScreenPrimaryStack(); + mRootWindowContainer.getDefaultDisplay().getRootSplitScreenPrimaryTask(); if (stack == null) { return; } diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java index b4f75e545729..1d5b5d1a46a4 100644 --- a/services/core/java/com/android/server/wm/PinnedStackController.java +++ b/services/core/java/com/android/server/wm/PinnedStackController.java @@ -125,7 +125,7 @@ class PinnedStackController { public void startAnimation(Rect destinationBounds, Rect sourceRectHint, int animationDuration) { synchronized (mService.mGlobalLock) { - final ActivityStack pinnedStack = mDisplayContent.getPinnedStack(); + final ActivityStack pinnedStack = mDisplayContent.getRootPinnedTask(); pinnedStack.animateResizePinnedStack(destinationBounds, sourceRectHint, animationDuration, true /* fromFullscreen */); } @@ -134,7 +134,7 @@ class PinnedStackController { @Override public void resetBoundsAnimation(Rect bounds) { synchronized (mService.mGlobalLock) { - if (mDisplayContent.hasPinnedStack()) { + if (mDisplayContent.hasPinnedTask()) { final ActivityStack pinnedStack = mDisplayContent.getTopStackInWindowingMode( WINDOWING_MODE_PINNED); if (pinnedStack != null) { @@ -383,7 +383,7 @@ class PinnedStackController { } try { final Rect animatingBounds = new Rect(); - final ActivityStack pinnedStack = mDisplayContent.getPinnedStack(); + final ActivityStack pinnedStack = mDisplayContent.getRootPinnedTask(); if (pinnedStack != null) { pinnedStack.getAnimationOrCurrentBounds(animatingBounds); } diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index e1dfc177a881..292e8aaa0c04 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -1387,7 +1387,7 @@ class RecentTasks { // Trim tasks that are in stacks that are behind the home stack final DisplayContent display = stack.getDisplay(); - return display.getIndexOf(stack) < display.getIndexOf(display.getHomeStack()); + return display.getIndexOf(stack) < display.getIndexOf(display.getRootHomeTask()); } /** diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index a97db16ba264..da9d074eb7bc 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -413,7 +413,7 @@ public class RecentsAnimationController implements DeathRecipient { // Save the minimized home height final ActivityStack dockedStack = - mDisplayContent.getSplitScreenPrimaryStack(); + mDisplayContent.getRootSplitScreenPrimaryTask(); mDisplayContent.getDockedDividerController().getHomeStackBoundsInDockedMode( mDisplayContent.getConfiguration(), dockedStack == null ? DOCKED_INVALID : dockedStack.getDockSide(), diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 3eddd85d121e..d3da50060104 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -1982,7 +1982,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> boolean switchUser(int userId, UserState uss) { final int focusStackId = getTopDisplayFocusedStack().getRootTaskId(); // We dismiss the docked stack whenever we switch users. - final ActivityStack dockedStack = getDefaultDisplay().getSplitScreenPrimaryStack(); + final ActivityStack dockedStack = getDefaultDisplay().getRootSplitScreenPrimaryTask(); if (dockedStack != null) { mStackSupervisor.moveTasksToFullscreenStackLocked( dockedStack, dockedStack.isFocusedStackOnDisplay()); @@ -1994,7 +1994,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> mUserStackInFront.put(mCurrentUser, focusStackId); final int restoreStackId = - mUserStackInFront.get(userId, getDefaultDisplay().getHomeStack().getRootTaskId()); + mUserStackInFront.get(userId, getDefaultDisplay().getRootHomeTask().getRootTaskId()); mCurrentUser = userId; mStackSupervisor.mStartingUsers.add(uss); @@ -2012,7 +2012,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> ActivityStack stack = getStack(restoreStackId); if (stack == null) { - stack = getDefaultDisplay().getHomeStack(); + stack = getDefaultDisplay().getRootHomeTask(); } final boolean homeInFront = stack.isActivityTypeHome(); if (stack.isOnHomeDisplay()) { @@ -2035,7 +2035,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> void updateUserStack(int userId, ActivityStack stack) { if (userId != mCurrentUser) { mUserStackInFront.put(userId, stack != null ? stack.getRootTaskId() - : getDefaultDisplay().getHomeStack().getRootTaskId()); + : getDefaultDisplay().getRootHomeTask().getRootTaskId()); } } @@ -2113,7 +2113,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> try { final Task task = r.getTask(); - final ActivityStack pinnedStack = display.getPinnedStack(); + final ActivityStack pinnedStack = display.getRootPinnedTask(); // This will change the pinned stack's windowing mode to its original mode, ensuring // we only have one stack that is in pinned mode. if (pinnedStack != null) { @@ -2868,7 +2868,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return stack; } if (windowingMode == WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY - && display.getSplitScreenPrimaryStack() == stack + && display.getRootSplitScreenPrimaryTask() == stack && candidateTask == stack.getTopMostTask()) { // This is a special case when we try to launch an activity that is currently on // top of split-screen primary stack, but is targeting split-screen secondary. diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index c4d328a86368..26ba27feed23 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -3163,7 +3163,7 @@ public class WindowManagerService extends IWindowManager.Stub // Notify whether the docked stack exists for the current user final DisplayContent displayContent = getDefaultDisplayContentLocked(); final ActivityStack stack = - displayContent.getSplitScreenPrimaryStack(); + displayContent.getRootSplitScreenPrimaryTask(); displayContent.mDividerControllerLocked.notifyDockedStackExistsChanged( stack != null && stack.hasTaskForUser(newUserId)); @@ -6416,7 +6416,7 @@ public class WindowManagerService extends IWindowManager.Stub public int getDockedStackSide() { synchronized (mGlobalLock) { final ActivityStack dockedStack = getDefaultDisplayContentLocked() - .getSplitScreenPrimaryStack(); + .getRootSplitScreenPrimaryTask(); return dockedStack == null ? DOCKED_INVALID : dockedStack.getDockSide(); } } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 6173488119d3..73984fd49f73 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1477,7 +1477,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // 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. final DisplayContent dc = getDisplayContent(); - return mAttrs.type >= FIRST_SYSTEM_WINDOW && dc != null ? dc.getHomeStack() : null; + return mAttrs.type >= FIRST_SYSTEM_WINDOW && dc != null ? dc.getRootHomeTask() : null; } /** @@ -2651,7 +2651,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // also reset drag resizing state, because the owner can't do it // anymore. final ActivityStack stack = - dc.getSplitScreenPrimaryStack(); + dc.getRootSplitScreenPrimaryTask(); if (stack != null) { stack.resetDockedStackToMiddle(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java index ed9cdf4caa94..4f84ee17b087 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java @@ -233,7 +233,7 @@ public class ActivityDisplayTests extends ActivityTestsBase { final ActivityStack pinnedStack = display.createStack( WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD, true /* onTop */); - assertEquals(pinnedStack, display.getPinnedStack()); + assertEquals(pinnedStack, display.getRootPinnedTask()); assertEquals(pinnedStack, display.getTopStack()); final ActivityStack anotherAlwaysOnTopStack = display.createStack( 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 af3a3fe5f77e..ebe4ab99663a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -1010,7 +1010,7 @@ public class ActivityRecordTests extends ActivityTestsBase { @Test public void testDestroyIfPossible_lastActivityAboveEmptyHomeStack() { // Empty the home stack. - final ActivityStack homeStack = mActivity.getDisplay().getHomeStack(); + final ActivityStack homeStack = mActivity.getDisplay().getRootHomeTask(); homeStack.forAllTasks((t) -> { homeStack.removeChild(t, "test"); }, true /* traverseTopToBottom */, homeStack); @@ -1036,7 +1036,7 @@ public class ActivityRecordTests extends ActivityTestsBase { @Test public void testCompleteFinishing_lastActivityAboveEmptyHomeStack() { // Empty the home stack. - final ActivityStack homeStack = mActivity.getDisplay().getHomeStack(); + final ActivityStack homeStack = mActivity.getDisplay().getRootHomeTask(); homeStack.forAllTasks((t) -> { homeStack.removeChild(t, "test"); }, true /* traverseTopToBottom */, homeStack); diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index 79f808e4687a..b5e7dd58f7cc 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -303,7 +303,7 @@ public class RecentTasksTest extends ActivityTestsBase { // other task Task task1 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK) - .setStack(mDisplay.getHomeStack()).build(); + .setStack(mDisplay.getRootHomeTask()).build(); Task task2 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK) .setStack(mStack).build(); @@ -792,7 +792,7 @@ public class RecentTasksTest extends ActivityTestsBase { public void testBackStackTasks_expectNoTrim() { mRecentTasks.setParameters(-1 /* min */, 1 /* max */, -1 /* ms */); - final ActivityStack homeStack = mDisplay.getHomeStack(); + final ActivityStack homeStack = mDisplay.getRootHomeTask(); final ActivityStack aboveHomeStack = mDisplay.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); @@ -812,7 +812,7 @@ public class RecentTasksTest extends ActivityTestsBase { final ActivityStack behindHomeStack = mDisplay.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final ActivityStack homeStack = mDisplay.getHomeStack(); + final ActivityStack homeStack = mDisplay.getRootHomeTask(); final ActivityStack aboveHomeStack = mDisplay.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); @@ -832,7 +832,7 @@ public class RecentTasksTest extends ActivityTestsBase { public void testOtherDisplayTasks_expectNoTrim() { mRecentTasks.setParameters(-1 /* min */, 1 /* max */, -1 /* ms */); - final ActivityStack homeStack = mDisplay.getHomeStack(); + final ActivityStack homeStack = mDisplay.getRootHomeTask(); final DisplayContent otherDisplay = addNewDisplayContentAt(DisplayContent.POSITION_TOP); final ActivityStack otherDisplayStack = otherDisplay.createStack( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); 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 ec8e40290ca1..b78107e9024f 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java @@ -209,7 +209,7 @@ public class RecentsAnimationTest extends ActivityTestsBase { public void testSetLaunchTaskBehindOfTargetActivity() { DisplayContent display = mRootWindowContainer.getDefaultDisplay(); display.mDisplayContent.mBoundsAnimationController = mock(BoundsAnimationController.class); - ActivityStack homeStack = display.getHomeStack(); + ActivityStack homeStack = display.getRootHomeTask(); // Assume the home activity support recents. ActivityRecord targetActivity = homeStack.getTopNonFinishingActivity(); if (targetActivity == null) { 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 07dfc509812c..79db927d38f6 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java @@ -131,7 +131,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { 0f /*aspectRatio*/, "initialMove"); final DisplayContent display = mFullscreenStack.getDisplay(); - ActivityStack pinnedStack = display.getPinnedStack(); + ActivityStack pinnedStack = display.getRootPinnedTask(); // Ensure a task has moved over. ensureStackPlacement(pinnedStack, firstActivity); ensureStackPlacement(mFullscreenStack, secondActivity); @@ -141,7 +141,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { 0f /*aspectRatio*/, "secondMove"); // Need to get stacks again as a new instance might have been created. - pinnedStack = display.getPinnedStack(); + pinnedStack = display.getRootPinnedTask(); mFullscreenStack = display.getStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); // Ensure stacks have swapped tasks. ensureStackPlacement(pinnedStack, secondActivity); @@ -417,7 +417,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { @Test public void testResumeFocusedStacksStartsHomeActivity_NoActivities() { mFullscreenStack.removeIfPossible(); - mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY).getHomeStack() + mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY).getRootHomeTask() .removeIfPossible(); mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY) .createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP); @@ -440,7 +440,7 @@ public class RootActivityContainerTests extends ActivityTestsBase { @Test public void testResumeFocusedStacksStartsHomeActivity_ActivityOnSecondaryScreen() { mFullscreenStack.removeIfPossible(); - mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY).getHomeStack() + mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY).getRootHomeTask() .removeIfPossible(); mService.mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY) .createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP); |