Loading services/core/java/com/android/server/wm/ActivityDisplay.java +61 −25 Original line number Diff line number Diff line Loading @@ -48,12 +48,16 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.RootActivityContainer.FindTaskResult; import static com.android.server.wm.RootActivityContainer.TAG_STATES; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.WindowConfiguration; import android.content.res.Configuration; import android.graphics.Point; import android.os.IBinder; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; Loading Loading @@ -86,6 +90,8 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> private ActivityTaskManagerService mService; private RootActivityContainer mRootActivityContainer; // TODO: Remove once unification is complete. DisplayContent mDisplayContent; /** Actual Display this object tracks. */ int mDisplayId; Display mDisplay; Loading Loading @@ -138,8 +144,6 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> // Used in updating the display size private Point mTmpDisplaySize = new Point(); private DisplayWindowController mWindowContainerController; private final FindTaskResult mTmpFindTaskResult = new FindTaskResult(); ActivityDisplay(RootActivityContainer root, Display display) { Loading @@ -147,19 +151,15 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> mService = root.mService; mDisplayId = display.getDisplayId(); mDisplay = display; mWindowContainerController = createWindowContainerController(); mDisplayContent = createDisplayContent(); updateBounds(); } protected DisplayWindowController createWindowContainerController() { return new DisplayWindowController(mDisplay, this); } DisplayWindowController getWindowContainerController() { return mWindowContainerController; protected DisplayContent createDisplayContent() { return mService.mWindowManager.mRoot.createDisplayContent(mDisplay, this); } void updateBounds() { private void updateBounds() { mDisplay.getRealSize(mTmpDisplaySize); setBounds(0, 0, mTmpDisplaySize.x, mTmpDisplaySize.y); } Loading @@ -178,7 +178,10 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } updateBounds(); mWindowContainerController.onDisplayChanged(); if (mDisplayContent != null) { mDisplayContent.updateDisplayInfo(); mService.mWindowManager.requestTraversal(); } } @Override Loading Loading @@ -270,9 +273,9 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> // ActivityStack#getWindowContainerController() can be null. In this special case, // since DisplayContest#positionStackAt() is called in TaskStack#onConfigurationChanged(), // we don't have to call WindowContainerController#positionChildAt() here. if (stack.getWindowContainerController() != null) { mWindowContainerController.positionChildAt(stack.getWindowContainerController(), insertPosition, includingParents); if (stack.getWindowContainerController() != null && mDisplayContent != null) { mDisplayContent.positionStackAt(insertPosition, stack.getWindowContainerController().mContainer, includingParents); } if (!wasContained) { stack.setParent(this); Loading Loading @@ -958,17 +961,23 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> getRequestedOverrideConfiguration().windowConfiguration.getRotation(); if (currRotation != ROTATION_UNDEFINED && currRotation != overrideConfiguration.windowConfiguration.getRotation() && getWindowContainerController() != null) { getWindowContainerController().applyRotation(currRotation, && mDisplayContent != null) { mDisplayContent.applyRotationLocked(currRotation, overrideConfiguration.windowConfiguration.getRotation()); } super.onRequestedOverrideConfigurationChanged(overrideConfiguration); if (mDisplayContent != null) { mService.mWindowManager.setNewDisplayOverrideConfiguration( overrideConfiguration, mDisplayContent); } } @Override public void onConfigurationChanged(Configuration newParentConfig) { // update resources before cascade so that docked/pinned stacks use the correct info getWindowContainerController().preOnConfigurationChanged(); if (mDisplayContent != null) { mDisplayContent.preOnConfigurationChanged(); } super.onConfigurationChanged(newParentConfig); } Loading Loading @@ -1099,8 +1108,8 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> private void releaseSelfIfNeeded() { if (mStacks.isEmpty() && mRemoved) { mWindowContainerController.removeContainer(); mWindowContainerController = null; mDisplayContent.removeIfPossible(); mDisplayContent = null; mRootActivityContainer.removeChild(this); mRootActivityContainer.mStackSupervisor .getKeyguardController().onDisplayRemoved(mDisplayId); Loading @@ -1122,7 +1131,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> * @see Display#FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS */ boolean supportsSystemDecorations() { return mWindowContainerController.supportsSystemDecorations(); return mDisplayContent.supportsSystemDecorations(); } @VisibleForTesting Loading @@ -1136,7 +1145,30 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } void setFocusedApp(ActivityRecord r, boolean moveFocusNow) { mWindowContainerController.setFocusedApp(r.appToken, moveFocusNow); if (mDisplayContent == null) { return; } final AppWindowToken newFocus; final IBinder token = r.appToken; if (token == null) { if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Clearing focused app, displayId=" + mDisplayId); newFocus = null; } else { newFocus = mService.mWindowManager.mRoot.getAppWindowToken(token); if (newFocus == null) { Slog.w(TAG_WM, "Attempted to set focus to non-existing app token: " + token + ", displayId=" + mDisplayId); } if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Set focused app to: " + newFocus + " moveFocusNow=" + moveFocusNow + " displayId=" + mDisplayId); } final boolean changed = mDisplayContent.setFocusedApp(newFocus); if (moveFocusNow && changed) { mService.mWindowManager.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /*updateInputWindows*/); } } /** Loading Loading @@ -1284,17 +1316,21 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } /** * See {@link DisplayWindowController#deferUpdateImeTarget()} * See {@link DisplayContent#deferUpdateImeTarget()} */ public void deferUpdateImeTarget() { mWindowContainerController.deferUpdateImeTarget(); if (mDisplayContent != null) { mDisplayContent.deferUpdateImeTarget(); } } /** * See {@link DisplayWindowController#deferUpdateImeTarget()} * See {@link DisplayContent#deferUpdateImeTarget()} */ public void continueUpdateImeTarget() { mWindowContainerController.continueUpdateImeTarget(); if (mDisplayContent != null) { mDisplayContent.continueUpdateImeTarget(); } } public void dump(PrintWriter pw, String prefix) { Loading services/core/java/com/android/server/wm/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -2942,7 +2942,7 @@ final class ActivityRecord extends ConfigurationContainer { final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain( getDisplay().getWindowContainerController().isNextTransitionForward()); getDisplay().mDisplayContent.isNextTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading services/core/java/com/android/server/wm/ActivityStack.java +24 −27 Original line number Diff line number Diff line Loading @@ -574,7 +574,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // bounds were on the pre-rotated display. if (prevRotation != newRotation) { mTmpRect2.set(mTmpRect); getDisplay().getWindowContainerController().mContainer getDisplay().mDisplayContent .rotateBounds(newParentConfig.windowConfiguration.getBounds(), prevRotation, newRotation, mTmpRect2); hasNewOverrideBounds = true; Loading Loading @@ -609,8 +609,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } else if ( getRequestedOverrideWindowingMode() == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) { Rect dockedBounds = display.getSplitScreenPrimaryStack().getBounds(); final boolean isMinimizedDock = getDisplay().getWindowContainerController() .mContainer.getDockedDividerController().isMinimizedDock(); final boolean isMinimizedDock = getDisplay().mDisplayContent.getDockedDividerController().isMinimizedDock(); if (isMinimizedDock) { TaskRecord topTask = display.getSplitScreenPrimaryStack().topTask(); if (topTask != null) { Loading Loading @@ -2714,16 +2714,16 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // that the previous one will be hidden soon. This way it can know // to ignore it when computing the desired screen orientation. boolean anim = true; final DisplayWindowController dwc = getDisplay().getWindowContainerController(); final DisplayContent dc = getDisplay().mDisplayContent; if (prev != null) { if (prev.finishing) { if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare close transition: prev=" + prev); if (mStackSupervisor.mNoAnimActivities.contains(prev)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition( dc.prepareAppTransition( prev.getTaskRecord() == next.getTaskRecord() ? TRANSIT_ACTIVITY_CLOSE : TRANSIT_TASK_CLOSE, false); } Loading @@ -2733,9 +2733,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai "Prepare open transition: prev=" + prev); if (mStackSupervisor.mNoAnimActivities.contains(next)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition( dc.prepareAppTransition( prev.getTaskRecord() == next.getTaskRecord() ? TRANSIT_ACTIVITY_OPEN : next.mLaunchTaskBehind ? TRANSIT_TASK_OPEN_BEHIND : TRANSIT_TASK_OPEN, false); Loading @@ -2745,9 +2745,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare open transition: no previous"); if (mStackSupervisor.mNoAnimActivities.contains(next)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition(TRANSIT_ACTIVITY_OPEN, false); dc.prepareAppTransition(TRANSIT_ACTIVITY_OPEN, false); } } Loading Loading @@ -2869,8 +2869,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai next.clearOptionsLocked(); transaction.setLifecycleStateRequest( ResumeActivityItem.obtain(next.app.getReportedProcState(), getDisplay().getWindowContainerController() .isNextTransitionForward())); getDisplay().mDisplayContent.isNextTransitionForward())); mService.getLifecycleManager().scheduleTransaction(transaction); if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Resumed " Loading Loading @@ -3072,11 +3071,11 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai task.setFrontOfTask(); if (!isHomeOrRecentsStack() || numActivities() > 0) { final DisplayWindowController dwc = getDisplay().getWindowContainerController(); final DisplayContent dc = getDisplay().mDisplayContent; if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare open transition: starting " + r); if ((r.intent.getFlags() & Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { dwc.prepareAppTransition(TRANSIT_NONE, keepCurTransition); dc.prepareAppTransition(TRANSIT_NONE, keepCurTransition); mStackSupervisor.mNoAnimActivities.add(r); } else { int transit = TRANSIT_ACTIVITY_OPEN; Loading @@ -3095,7 +3094,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai transit = TRANSIT_TASK_OPEN; } } dwc.prepareAppTransition(transit, keepCurTransition); dc.prepareAppTransition(transit, keepCurTransition); mStackSupervisor.mNoAnimActivities.remove(r); } boolean doShow = true; Loading Loading @@ -3724,7 +3723,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai int taskNdx = mTaskHistory.indexOf(finishedTask); final TaskRecord task = finishedTask; int activityNdx = task.mActivities.indexOf(r); getDisplay().getWindowContainerController().prepareAppTransition( getDisplay().mDisplayContent.prepareAppTransition( TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */); finishActivityLocked(r, Activity.RESULT_CANCELED, null, reason, false); finishedTask = task; Loading Loading @@ -3890,7 +3889,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mService.getTaskChangeNotificationController().notifyTaskRemovalStarted( task.taskId); } getDisplay().getWindowContainerController().prepareAppTransition(transit, false); getDisplay().mDisplayContent.prepareAppTransition(transit, false); // Tell window manager to prepare for this one to be removed. r.setVisibility(false); Loading Loading @@ -3945,10 +3944,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } private void prepareActivityHideTransitionAnimation(ActivityRecord r, int transit) { final DisplayWindowController dwc = getDisplay().getWindowContainerController(); dwc.prepareAppTransition(transit, false); final DisplayContent dc = getDisplay().mDisplayContent; dc.prepareAppTransition(transit, false); r.setVisibility(false); dwc.executeAppTransition(); dc.executeAppTransition(); if (!mStackSupervisor.mActivitiesWaitingForVisibleActivity.contains(r)) { mStackSupervisor.mActivitiesWaitingForVisibleActivity.add(r); } Loading Loading @@ -4692,7 +4691,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai ActivityOptions.abort(options); } } getDisplay().getWindowContainerController().prepareAppTransition(transit, false); getDisplay().mDisplayContent.prepareAppTransition(transit, false); } private void updateTaskMovement(TaskRecord task, boolean toFront) { Loading Loading @@ -4761,8 +4760,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare to front transition: task=" + tr); if (noAnimation) { getDisplay().getWindowContainerController().prepareAppTransition( TRANSIT_NONE, false); getDisplay().mDisplayContent.prepareAppTransition(TRANSIT_NONE, false); if (r != null) { mStackSupervisor.mNoAnimActivities.add(r); } Loading Loading @@ -4844,8 +4842,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mTaskHistory.add(0, tr); updateTaskMovement(tr, false); getDisplay().getWindowContainerController().prepareAppTransition( TRANSIT_TASK_TO_BACK, false); getDisplay().mDisplayContent.prepareAppTransition(TRANSIT_TASK_TO_BACK, false); moveToBack("moveTaskToBackLocked", tr); if (inPinnedWindowingMode()) { Loading Loading @@ -5170,7 +5167,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai + r.intent.getComponent().flattenToShortString()); // Force the destroy to skip right to removal. r.app = null; getDisplay().getWindowContainerController().prepareAppTransition( getDisplay().mDisplayContent.prepareAppTransition( TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */); finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false, "handleAppCrashedLocked"); Loading Loading @@ -5508,7 +5505,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } void executeAppTransition(ActivityOptions options) { getDisplay().getWindowContainerController().executeAppTransition(); getDisplay().mDisplayContent.executeAppTransition(); ActivityOptions.abort(options); } Loading services/core/java/com/android/server/wm/ActivityStackSupervisor.java +3 −3 Original line number Diff line number Diff line Loading @@ -818,7 +818,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { final ClientTransaction clientTransaction = ClientTransaction.obtain( proc.getThread(), r.appToken); final DisplayWindowController dwc = r.getDisplay().getWindowContainerController(); final DisplayContent dc = r.getDisplay().mDisplayContent; clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent), System.identityHashCode(r), r.info, // TODO: Have this take the merged configuration instead of separate global Loading @@ -827,12 +827,12 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { mergedConfiguration.getOverrideConfiguration(), r.compat, r.launchedFromPackage, task.voiceInteractor, proc.getReportedProcState(), r.icicle, r.persistentState, results, newIntents, dwc.isNextTransitionForward(), profilerInfo)); dc.isNextTransitionForward(), profilerInfo)); // Set desired final state. final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain(dwc.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(dc.isNextTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading services/core/java/com/android/server/wm/ActivityStarter.java +1 −1 Original line number Diff line number Diff line Loading @@ -1565,7 +1565,7 @@ class ActivityStarter { mTargetStack.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); // Go ahead and tell window manager to execute app transition for this activity // since the app transition will not be triggered through the resume channel. mTargetStack.getDisplay().getWindowContainerController().executeAppTransition(); mTargetStack.getDisplay().mDisplayContent.executeAppTransition(); } else { // If the target stack was not previously focusable (previous top running activity // on that stack was not visible) then any prior calls to move the stack to the Loading Loading
services/core/java/com/android/server/wm/ActivityDisplay.java +61 −25 Original line number Diff line number Diff line Loading @@ -48,12 +48,16 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.RootActivityContainer.FindTaskResult; import static com.android.server.wm.RootActivityContainer.TAG_STATES; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.WindowConfiguration; import android.content.res.Configuration; import android.graphics.Point; import android.os.IBinder; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; Loading Loading @@ -86,6 +90,8 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> private ActivityTaskManagerService mService; private RootActivityContainer mRootActivityContainer; // TODO: Remove once unification is complete. DisplayContent mDisplayContent; /** Actual Display this object tracks. */ int mDisplayId; Display mDisplay; Loading Loading @@ -138,8 +144,6 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> // Used in updating the display size private Point mTmpDisplaySize = new Point(); private DisplayWindowController mWindowContainerController; private final FindTaskResult mTmpFindTaskResult = new FindTaskResult(); ActivityDisplay(RootActivityContainer root, Display display) { Loading @@ -147,19 +151,15 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> mService = root.mService; mDisplayId = display.getDisplayId(); mDisplay = display; mWindowContainerController = createWindowContainerController(); mDisplayContent = createDisplayContent(); updateBounds(); } protected DisplayWindowController createWindowContainerController() { return new DisplayWindowController(mDisplay, this); } DisplayWindowController getWindowContainerController() { return mWindowContainerController; protected DisplayContent createDisplayContent() { return mService.mWindowManager.mRoot.createDisplayContent(mDisplay, this); } void updateBounds() { private void updateBounds() { mDisplay.getRealSize(mTmpDisplaySize); setBounds(0, 0, mTmpDisplaySize.x, mTmpDisplaySize.y); } Loading @@ -178,7 +178,10 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } updateBounds(); mWindowContainerController.onDisplayChanged(); if (mDisplayContent != null) { mDisplayContent.updateDisplayInfo(); mService.mWindowManager.requestTraversal(); } } @Override Loading Loading @@ -270,9 +273,9 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> // ActivityStack#getWindowContainerController() can be null. In this special case, // since DisplayContest#positionStackAt() is called in TaskStack#onConfigurationChanged(), // we don't have to call WindowContainerController#positionChildAt() here. if (stack.getWindowContainerController() != null) { mWindowContainerController.positionChildAt(stack.getWindowContainerController(), insertPosition, includingParents); if (stack.getWindowContainerController() != null && mDisplayContent != null) { mDisplayContent.positionStackAt(insertPosition, stack.getWindowContainerController().mContainer, includingParents); } if (!wasContained) { stack.setParent(this); Loading Loading @@ -958,17 +961,23 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> getRequestedOverrideConfiguration().windowConfiguration.getRotation(); if (currRotation != ROTATION_UNDEFINED && currRotation != overrideConfiguration.windowConfiguration.getRotation() && getWindowContainerController() != null) { getWindowContainerController().applyRotation(currRotation, && mDisplayContent != null) { mDisplayContent.applyRotationLocked(currRotation, overrideConfiguration.windowConfiguration.getRotation()); } super.onRequestedOverrideConfigurationChanged(overrideConfiguration); if (mDisplayContent != null) { mService.mWindowManager.setNewDisplayOverrideConfiguration( overrideConfiguration, mDisplayContent); } } @Override public void onConfigurationChanged(Configuration newParentConfig) { // update resources before cascade so that docked/pinned stacks use the correct info getWindowContainerController().preOnConfigurationChanged(); if (mDisplayContent != null) { mDisplayContent.preOnConfigurationChanged(); } super.onConfigurationChanged(newParentConfig); } Loading Loading @@ -1099,8 +1108,8 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> private void releaseSelfIfNeeded() { if (mStacks.isEmpty() && mRemoved) { mWindowContainerController.removeContainer(); mWindowContainerController = null; mDisplayContent.removeIfPossible(); mDisplayContent = null; mRootActivityContainer.removeChild(this); mRootActivityContainer.mStackSupervisor .getKeyguardController().onDisplayRemoved(mDisplayId); Loading @@ -1122,7 +1131,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> * @see Display#FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS */ boolean supportsSystemDecorations() { return mWindowContainerController.supportsSystemDecorations(); return mDisplayContent.supportsSystemDecorations(); } @VisibleForTesting Loading @@ -1136,7 +1145,30 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } void setFocusedApp(ActivityRecord r, boolean moveFocusNow) { mWindowContainerController.setFocusedApp(r.appToken, moveFocusNow); if (mDisplayContent == null) { return; } final AppWindowToken newFocus; final IBinder token = r.appToken; if (token == null) { if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Clearing focused app, displayId=" + mDisplayId); newFocus = null; } else { newFocus = mService.mWindowManager.mRoot.getAppWindowToken(token); if (newFocus == null) { Slog.w(TAG_WM, "Attempted to set focus to non-existing app token: " + token + ", displayId=" + mDisplayId); } if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Set focused app to: " + newFocus + " moveFocusNow=" + moveFocusNow + " displayId=" + mDisplayId); } final boolean changed = mDisplayContent.setFocusedApp(newFocus); if (moveFocusNow && changed) { mService.mWindowManager.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /*updateInputWindows*/); } } /** Loading Loading @@ -1284,17 +1316,21 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } /** * See {@link DisplayWindowController#deferUpdateImeTarget()} * See {@link DisplayContent#deferUpdateImeTarget()} */ public void deferUpdateImeTarget() { mWindowContainerController.deferUpdateImeTarget(); if (mDisplayContent != null) { mDisplayContent.deferUpdateImeTarget(); } } /** * See {@link DisplayWindowController#deferUpdateImeTarget()} * See {@link DisplayContent#deferUpdateImeTarget()} */ public void continueUpdateImeTarget() { mWindowContainerController.continueUpdateImeTarget(); if (mDisplayContent != null) { mDisplayContent.continueUpdateImeTarget(); } } public void dump(PrintWriter pw, String prefix) { Loading
services/core/java/com/android/server/wm/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -2942,7 +2942,7 @@ final class ActivityRecord extends ConfigurationContainer { final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain( getDisplay().getWindowContainerController().isNextTransitionForward()); getDisplay().mDisplayContent.isNextTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading
services/core/java/com/android/server/wm/ActivityStack.java +24 −27 Original line number Diff line number Diff line Loading @@ -574,7 +574,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // bounds were on the pre-rotated display. if (prevRotation != newRotation) { mTmpRect2.set(mTmpRect); getDisplay().getWindowContainerController().mContainer getDisplay().mDisplayContent .rotateBounds(newParentConfig.windowConfiguration.getBounds(), prevRotation, newRotation, mTmpRect2); hasNewOverrideBounds = true; Loading Loading @@ -609,8 +609,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } else if ( getRequestedOverrideWindowingMode() == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) { Rect dockedBounds = display.getSplitScreenPrimaryStack().getBounds(); final boolean isMinimizedDock = getDisplay().getWindowContainerController() .mContainer.getDockedDividerController().isMinimizedDock(); final boolean isMinimizedDock = getDisplay().mDisplayContent.getDockedDividerController().isMinimizedDock(); if (isMinimizedDock) { TaskRecord topTask = display.getSplitScreenPrimaryStack().topTask(); if (topTask != null) { Loading Loading @@ -2714,16 +2714,16 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai // that the previous one will be hidden soon. This way it can know // to ignore it when computing the desired screen orientation. boolean anim = true; final DisplayWindowController dwc = getDisplay().getWindowContainerController(); final DisplayContent dc = getDisplay().mDisplayContent; if (prev != null) { if (prev.finishing) { if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare close transition: prev=" + prev); if (mStackSupervisor.mNoAnimActivities.contains(prev)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition( dc.prepareAppTransition( prev.getTaskRecord() == next.getTaskRecord() ? TRANSIT_ACTIVITY_CLOSE : TRANSIT_TASK_CLOSE, false); } Loading @@ -2733,9 +2733,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai "Prepare open transition: prev=" + prev); if (mStackSupervisor.mNoAnimActivities.contains(next)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition( dc.prepareAppTransition( prev.getTaskRecord() == next.getTaskRecord() ? TRANSIT_ACTIVITY_OPEN : next.mLaunchTaskBehind ? TRANSIT_TASK_OPEN_BEHIND : TRANSIT_TASK_OPEN, false); Loading @@ -2745,9 +2745,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare open transition: no previous"); if (mStackSupervisor.mNoAnimActivities.contains(next)) { anim = false; dwc.prepareAppTransition(TRANSIT_NONE, false); dc.prepareAppTransition(TRANSIT_NONE, false); } else { dwc.prepareAppTransition(TRANSIT_ACTIVITY_OPEN, false); dc.prepareAppTransition(TRANSIT_ACTIVITY_OPEN, false); } } Loading Loading @@ -2869,8 +2869,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai next.clearOptionsLocked(); transaction.setLifecycleStateRequest( ResumeActivityItem.obtain(next.app.getReportedProcState(), getDisplay().getWindowContainerController() .isNextTransitionForward())); getDisplay().mDisplayContent.isNextTransitionForward())); mService.getLifecycleManager().scheduleTransaction(transaction); if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Resumed " Loading Loading @@ -3072,11 +3071,11 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai task.setFrontOfTask(); if (!isHomeOrRecentsStack() || numActivities() > 0) { final DisplayWindowController dwc = getDisplay().getWindowContainerController(); final DisplayContent dc = getDisplay().mDisplayContent; if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare open transition: starting " + r); if ((r.intent.getFlags() & Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { dwc.prepareAppTransition(TRANSIT_NONE, keepCurTransition); dc.prepareAppTransition(TRANSIT_NONE, keepCurTransition); mStackSupervisor.mNoAnimActivities.add(r); } else { int transit = TRANSIT_ACTIVITY_OPEN; Loading @@ -3095,7 +3094,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai transit = TRANSIT_TASK_OPEN; } } dwc.prepareAppTransition(transit, keepCurTransition); dc.prepareAppTransition(transit, keepCurTransition); mStackSupervisor.mNoAnimActivities.remove(r); } boolean doShow = true; Loading Loading @@ -3724,7 +3723,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai int taskNdx = mTaskHistory.indexOf(finishedTask); final TaskRecord task = finishedTask; int activityNdx = task.mActivities.indexOf(r); getDisplay().getWindowContainerController().prepareAppTransition( getDisplay().mDisplayContent.prepareAppTransition( TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */); finishActivityLocked(r, Activity.RESULT_CANCELED, null, reason, false); finishedTask = task; Loading Loading @@ -3890,7 +3889,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mService.getTaskChangeNotificationController().notifyTaskRemovalStarted( task.taskId); } getDisplay().getWindowContainerController().prepareAppTransition(transit, false); getDisplay().mDisplayContent.prepareAppTransition(transit, false); // Tell window manager to prepare for this one to be removed. r.setVisibility(false); Loading Loading @@ -3945,10 +3944,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } private void prepareActivityHideTransitionAnimation(ActivityRecord r, int transit) { final DisplayWindowController dwc = getDisplay().getWindowContainerController(); dwc.prepareAppTransition(transit, false); final DisplayContent dc = getDisplay().mDisplayContent; dc.prepareAppTransition(transit, false); r.setVisibility(false); dwc.executeAppTransition(); dc.executeAppTransition(); if (!mStackSupervisor.mActivitiesWaitingForVisibleActivity.contains(r)) { mStackSupervisor.mActivitiesWaitingForVisibleActivity.add(r); } Loading Loading @@ -4692,7 +4691,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai ActivityOptions.abort(options); } } getDisplay().getWindowContainerController().prepareAppTransition(transit, false); getDisplay().mDisplayContent.prepareAppTransition(transit, false); } private void updateTaskMovement(TaskRecord task, boolean toFront) { Loading Loading @@ -4761,8 +4760,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare to front transition: task=" + tr); if (noAnimation) { getDisplay().getWindowContainerController().prepareAppTransition( TRANSIT_NONE, false); getDisplay().mDisplayContent.prepareAppTransition(TRANSIT_NONE, false); if (r != null) { mStackSupervisor.mNoAnimActivities.add(r); } Loading Loading @@ -4844,8 +4842,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mTaskHistory.add(0, tr); updateTaskMovement(tr, false); getDisplay().getWindowContainerController().prepareAppTransition( TRANSIT_TASK_TO_BACK, false); getDisplay().mDisplayContent.prepareAppTransition(TRANSIT_TASK_TO_BACK, false); moveToBack("moveTaskToBackLocked", tr); if (inPinnedWindowingMode()) { Loading Loading @@ -5170,7 +5167,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai + r.intent.getComponent().flattenToShortString()); // Force the destroy to skip right to removal. r.app = null; getDisplay().getWindowContainerController().prepareAppTransition( getDisplay().mDisplayContent.prepareAppTransition( TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */); finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false, "handleAppCrashedLocked"); Loading Loading @@ -5508,7 +5505,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } void executeAppTransition(ActivityOptions options) { getDisplay().getWindowContainerController().executeAppTransition(); getDisplay().mDisplayContent.executeAppTransition(); ActivityOptions.abort(options); } Loading
services/core/java/com/android/server/wm/ActivityStackSupervisor.java +3 −3 Original line number Diff line number Diff line Loading @@ -818,7 +818,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { final ClientTransaction clientTransaction = ClientTransaction.obtain( proc.getThread(), r.appToken); final DisplayWindowController dwc = r.getDisplay().getWindowContainerController(); final DisplayContent dc = r.getDisplay().mDisplayContent; clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent), System.identityHashCode(r), r.info, // TODO: Have this take the merged configuration instead of separate global Loading @@ -827,12 +827,12 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { mergedConfiguration.getOverrideConfiguration(), r.compat, r.launchedFromPackage, task.voiceInteractor, proc.getReportedProcState(), r.icicle, r.persistentState, results, newIntents, dwc.isNextTransitionForward(), profilerInfo)); dc.isNextTransitionForward(), profilerInfo)); // Set desired final state. final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain(dwc.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(dc.isNextTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading
services/core/java/com/android/server/wm/ActivityStarter.java +1 −1 Original line number Diff line number Diff line Loading @@ -1565,7 +1565,7 @@ class ActivityStarter { mTargetStack.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); // Go ahead and tell window manager to execute app transition for this activity // since the app transition will not be triggered through the resume channel. mTargetStack.getDisplay().getWindowContainerController().executeAppTransition(); mTargetStack.getDisplay().mDisplayContent.executeAppTransition(); } else { // If the target stack was not previously focusable (previous top running activity // on that stack was not visible) then any prior calls to move the stack to the Loading