summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2021-10-05 08:17:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-10-05 08:17:04 +0000
commit9b9cca942ee9a986040e487cc0098cc923ca6291 (patch)
treeb71dfe987087ead82dae14a579c0cbc368cc1961
parent69c8b1aef68a2f0bade155130c11eedbf996db8f (diff)
parent5da73506b3e48f3af00dc92702267451f78f2e44 (diff)
Merge "Add TransitionController to member of WindowContainer" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityClientController.java2
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java40
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java19
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java14
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java2
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java29
-rw-r--r--services/core/java/com/android/server/wm/DisplayPolicy.java3
-rw-r--r--services/core/java/com/android/server/wm/DisplayRotation.java10
-rw-r--r--services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java2
-rw-r--r--services/core/java/com/android/server/wm/InsetsStateController.java2
-rw-r--r--services/core/java/com/android/server/wm/PinnedTaskController.java2
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java2
-rw-r--r--services/core/java/com/android/server/wm/Task.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskFragment.java4
-rw-r--r--services/core/java/com/android/server/wm/WallpaperController.java2
-rw-r--r--services/core/java/com/android/server/wm/WallpaperWindowToken.java6
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java7
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java6
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java10
19 files changed, 80 insertions, 84 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index cc0db1d12e7b..ee72fc8622a5 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -1072,7 +1072,7 @@ class ActivityClientController extends IActivityClientController.Stub {
r.mDisplayContent.mAppTransition.overridePendingAppTransition(
packageName, enterAnim, exitAnim, null, null,
r.mOverrideTaskTransition);
- mService.getTransitionController().setOverrideAnimation(
+ r.mTransitionController.setOverrideAnimation(
TransitionInfo.AnimationOptions.makeCustomAnimOptions(packageName,
enterAnim, exitAnim, r.mOverrideTaskTransition),
null /* startCallback */, null /* finishCallback */);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index c1fcf71b38d2..3b1da1d0053d 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1531,7 +1531,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
// TODO(b/169035022): move to a more-appropriate place.
- mAtmService.getTransitionController().collect(this);
+ mTransitionController.collect(this);
if (prevDc.mOpeningApps.remove(this)) {
// Transfer opening transition to new display.
mDisplayContent.mOpeningApps.add(this);
@@ -3096,9 +3096,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mAtmService.deferWindowLayout();
try {
- final Transition newTransition = (!mAtmService.getTransitionController().isCollecting()
- && mAtmService.getTransitionController().getTransitionPlayer() != null)
- ? mAtmService.getTransitionController().createTransition(TRANSIT_CLOSE) : null;
+ final Transition newTransition = (!mTransitionController.isCollecting()
+ && mTransitionController.getTransitionPlayer() != null)
+ ? mTransitionController.createTransition(TRANSIT_CLOSE) : null;
mTaskSupervisor.mNoHistoryActivities.remove(this);
makeFinishingLocked();
// Make a local reference to its task since this.task could be set to null once this
@@ -3131,7 +3131,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
final boolean endTask = task.getTopNonFinishingActivity() == null
&& !task.isClearingToReuseTask();
if (newTransition != null) {
- mAtmService.getTransitionController().requestStartTransition(newTransition,
+ mTransitionController.requestStartTransition(newTransition,
endTask ? task : null, null /* remote */);
}
if (isState(RESUMED)) {
@@ -3559,12 +3559,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
if (stopped) {
abortAndClearOptionsAnimation();
}
- if (mAtmService.getTransitionController().isCollecting()) {
+ if (mTransitionController.isCollecting()) {
// We don't want the finishing to change the transition ready state since there will not
// be corresponding setReady for finishing.
- mAtmService.getTransitionController().collectExistenceChange(this);
+ mTransitionController.collectExistenceChange(this);
} else {
- mAtmService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, this);
+ mTransitionController.requestTransitionIfNeeded(TRANSIT_CLOSE, this);
}
}
@@ -3816,7 +3816,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
} else if (getDisplayContent().mAppTransition.isTransitionSet()) {
getDisplayContent().mClosingApps.add(this);
delayed = true;
- } else if (mAtmService.getTransitionController().inTransition()) {
+ } else if (mTransitionController.inTransition()) {
delayed = true;
}
@@ -3828,7 +3828,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
// TODO(b/169035022): move to a more-appropriate place.
- mAtmService.getTransitionController().collect(this);
+ mTransitionController.collect(this);
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
"Removing app %s delayed=%b animation=%s animating=%b", this, delayed,
@@ -4029,7 +4029,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
ProtoLog.v(WM_DEBUG_ADD_REMOVE,
"Removing starting %s from %s", tStartingWindow, fromActivity);
- mAtmService.getTransitionController().collect(tStartingWindow);
+ mTransitionController.collect(tStartingWindow);
tStartingWindow.reparent(this, POSITION_TOP);
// Propagate other interesting state between the tokens. If the old token is displayed,
@@ -4055,7 +4055,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// the token we transfer the animation over. Thus, set this flag to indicate
// we've transferred the animation.
mUseTransferredAnimation = true;
- } else if (mAtmService.getTransitionController().getTransitionPlayer() != null) {
+ } else if (mTransitionController.getTransitionPlayer() != null) {
// In the new transit system, just set this every time we transfer the window
mUseTransferredAnimation = true;
}
@@ -4552,8 +4552,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
if (options != null) {
- mAtmService.getTransitionController().setOverrideAnimation(options,
- startCallback, finishCallback);
+ mTransitionController.setOverrideAnimation(options, startCallback, finishCallback);
}
}
@@ -4784,7 +4783,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
Debug.getCallers(6));
// Before setting mVisibleRequested so we can track changes.
- mAtmService.getTransitionController().collect(this);
+ mTransitionController.collect(this);
onChildVisibilityRequested(visible);
@@ -4856,7 +4855,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
// If in a transition, defer commits for activities that are going invisible
- if (!visible && mAtmService.getTransitionController().inTransition(this)) {
+ if (!visible && inTransition()) {
return;
}
// If we are preparing an app transition, then delay changing
@@ -4983,8 +4982,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
* this has become invisible.
*/
private void postApplyAnimation(boolean visible) {
- final boolean usingShellTransitions =
- mAtmService.getTransitionController().getTransitionPlayer() != null;
+ final boolean usingShellTransitions = mTransitionController.isShellTransitionsEnabled();
final boolean delayed = isAnimating(TRANSITION | PARENTS | CHILDREN,
ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION
| ANIMATION_TYPE_RECENTS);
@@ -5434,7 +5432,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// returns. Just need to confirm this reasoning makes sense.
final boolean deferHidingClient = canEnterPictureInPicture
&& !isState(STARTED, STOPPING, STOPPED, PAUSED);
- if (!mAtmService.getTransitionController().isShellTransitionsEnabled()
+ if (!mTransitionController.isShellTransitionsEnabled()
&& deferHidingClient && pictureInPictureArgs.isAutoEnterEnabled()) {
// Go ahead and just put the activity in pip if it supports auto-pip.
mAtmService.enterPictureInPictureMode(this, pictureInPictureArgs);
@@ -5956,7 +5954,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
void startFreezingScreen(int overrideOriginalDisplayRotation) {
- if (mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ if (mTransitionController.isShellTransitionsEnabled()) {
return;
}
ProtoLog.i(WM_DEBUG_ORIENTATION,
@@ -7602,7 +7600,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
boolean isInTransition() {
- return mAtmService.getTransitionController().inTransition() // Shell transitions.
+ return mTransitionController.inTransition() // Shell transitions.
|| isAnimating(PARENTS | TRANSITION); // Legacy transitions.
}
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 980ebf0646e8..170789569b3f 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1564,14 +1564,15 @@ class ActivityStarter {
// startActivityInner. Otherwise, logic in startActivityInner could start a different
// transition based on a sub-action.
// Only do the create here (and defer requestStart) since startActivityInner might abort.
- final Transition newTransition = (!mService.getTransitionController().isCollecting()
- && mService.getTransitionController().getTransitionPlayer() != null)
- ? mService.getTransitionController().createTransition(TRANSIT_OPEN) : null;
+ final TransitionController transitionController = r.mTransitionController;
+ final Transition newTransition = (!transitionController.isCollecting()
+ && transitionController.getTransitionPlayer() != null)
+ ? transitionController.createTransition(TRANSIT_OPEN) : null;
RemoteTransition remoteTransition = r.takeRemoteTransition();
if (newTransition != null && remoteTransition != null) {
newTransition.setRemoteTransition(remoteTransition);
}
- mService.getTransitionController().collect(r);
+ transitionController.collect(r);
final boolean isTransient = r.getOptions() != null && r.getOptions().getTransientLaunch();
try {
mService.deferWindowLayout();
@@ -1618,19 +1619,19 @@ class ActivityStarter {
if (started) {
// The activity is started new rather than just brought forward, so record
// it as an existence change.
- mService.getTransitionController().collectExistenceChange(r);
+ transitionController.collectExistenceChange(r);
}
if (isTransient) {
// `r` isn't guaranteed to be the actual relevant activity, so we must wait
// until after we launched to identify the relevant activity.
- mService.getTransitionController().setTransientLaunch(mLastStartActivityRecord);
+ transitionController.setTransientLaunch(mLastStartActivityRecord);
}
if (newTransition != null) {
- mService.getTransitionController().requestStartTransition(newTransition,
+ transitionController.requestStartTransition(newTransition,
mTargetTask, remoteTransition);
} else if (started) {
// Make the collecting transition wait until this request is ready.
- mService.getTransitionController().setReady(r, false);
+ transitionController.setReady(r, false);
}
}
}
@@ -2769,7 +2770,7 @@ class ActivityStarter {
mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession,
mVoiceInteractor, toTop, mStartActivity, mSourceRecord, mOptions);
- mService.getTransitionController().collectExistenceChange(task);
+ task.mTransitionController.collectExistenceChange(task);
addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask - mReuseTask");
ProtoLog.v(WM_DEBUG_TASKS, "Starting new activity %s in new task %s",
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index c429e3fe9139..ba305929d808 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1387,7 +1387,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
mUserLeaving = true;
}
- mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_TO_FRONT,
+ task.mTransitionController.requestTransitionIfNeeded(TRANSIT_TO_FRONT,
0 /* flags */, task, task /* readyGroupRef */,
options != null ? options.getRemoteTransition() : null);
reason = reason + " findTaskToMoveToFront";
@@ -1563,17 +1563,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
return;
}
if (task.isVisible()) {
- if (mService.getTransitionController().isCollecting()) {
+ if (task.mTransitionController.isCollecting()) {
// We don't want the finishing to change the transition ready state since there will
// not be corresponding setReady for finishing.
- mService.getTransitionController().collectExistenceChange(task);
+ task.mTransitionController.collectExistenceChange(task);
} else {
- mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, task);
+ task.mTransitionController.requestTransitionIfNeeded(TRANSIT_CLOSE, task);
}
} else {
// Removing a non-visible task doesn't require a transition, but if there is one
// collecting, this should be a member just in case.
- mService.getTransitionController().collect(task);
+ task.mTransitionController.collect(task);
}
task.mInRemoveTask = true;
try {
@@ -1887,7 +1887,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
final ActivityRecord s = mStoppingActivities.get(i);
final boolean animating = s.isAnimating(TRANSITION | PARENTS,
ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS)
- || mService.getTransitionController().inTransition(s);
+ || s.inTransition();
ProtoLog.v(WM_DEBUG_STATES, "Stopping %s: nowVisible=%b animating=%b "
+ "finishing=%s", s, s.nowVisible, animating, s.finishing);
if (!animating || mService.mShuttingDown) {
@@ -2188,7 +2188,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
}
if (!task.supportsSplitScreenWindowingMode() || forceNonResizable) {
- if (mService.getTransitionController().getTransitionPlayer() != null) return;
+ if (task.mTransitionController.isShellTransitionsEnabled()) return;
// Dismiss docked root task. If task appeared to be in docked root task but is not
// resizable - we need to move it to top of fullscreen root task, otherwise it will
// be covered.
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 929ac56f740e..e21a00b4aec6 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -1547,7 +1547,7 @@ public class AppTransition implements Dump {
}
boolean prepareAppTransition(@TransitionType int transit, @TransitionFlags int flags) {
- if (mService.mAtmService.getTransitionController().getTransitionPlayer() != null) {
+ if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) {
return false;
}
mNextAppTransitionRequests.add(transit);
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index f800f0e395de..1db4c1da2023 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -1064,7 +1064,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
mAppTransition = new AppTransition(mWmService.mContext, mWmService, this);
mAppTransition.registerListenerLocked(mWmService.mActivityManagerAppTransitionNotifier);
- mAtmService.getTransitionController().registerLegacyListener(
+ mTransitionController.registerLegacyListener(
mWmService.mActivityManagerAppTransitionNotifier);
mAppTransition.registerListenerLocked(mFixedRotationTransitionListener);
mAppTransitionController = new AppTransitionController(mWmService, this);
@@ -1395,7 +1395,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
if (configChanged) {
mWaitingForConfig = true;
- if (mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ if (mTransitionController.isShellTransitionsEnabled()) {
requestChangeTransitionIfNeeded(changes);
} else {
mWmService.startFreezingDisplay(0 /* exitAnim */, 0 /* enterAnim */, this);
@@ -1515,7 +1515,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
} else if (currentConfig != null
// If waiting for a remote rotation, don't prematurely update configuration.
&& !(mDisplayRotation.isWaitingForRemoteRotation()
- || mAtmService.getTransitionController().isCollecting(this))) {
+ || mTransitionController.isCollecting(this))) {
// No obvious action we need to take, but if our current state mismatches the
// activity manager's, update it, disregarding font scale, which should remain set
// to the value of the previous configuration.
@@ -1914,8 +1914,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
*/
private void applyRotation(final int oldRotation, final int rotation) {
mDisplayRotation.applyCurrentRotation(rotation);
- final boolean shellTransitions =
- mWmService.mAtmService.getTransitionController().getTransitionPlayer() != null;
+ final boolean shellTransitions = mTransitionController.getTransitionPlayer() != null;
final boolean rotateSeamlessly =
mDisplayRotation.isRotatingSeamlessly() && !shellTransitions;
final Transaction transaction =
@@ -3070,7 +3069,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
if (isAnimating(TRANSITION | PARENTS)
// isAnimating is a legacy transition query and will be removed, so also add a
// check for whether this is in a shell-transition when not using legacy.
- || mAtmService.getTransitionController().inTransition()) {
+ || mTransitionController.inTransition()) {
mDeferredRemoval = true;
return;
}
@@ -3176,7 +3175,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
* be non-zero. This method is no-op if the display has been collected.
*/
void requestChangeTransitionIfNeeded(@ActivityInfo.Config int changes) {
- final TransitionController controller = mAtmService.getTransitionController();
+ final TransitionController controller = mTransitionController;
if (controller.isCollecting()) {
if (!controller.isCollecting(this)) {
controller.collect(this);
@@ -3215,8 +3214,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
screenRotationAnimation.dumpDebug(proto, SCREEN_ROTATION_ANIMATION);
}
mDisplayFrames.dumpDebug(proto, DISPLAY_FRAMES);
- if (mAtmService.getTransitionController().isShellTransitionsEnabled()) {
- mAtmService.getTransitionController().dumpDebugLegacy(proto, APP_TRANSITION);
+ if (mTransitionController.isShellTransitionsEnabled()) {
+ mTransitionController.dumpDebugLegacy(proto, APP_TRANSITION);
} else {
mAppTransition.dumpDebug(proto, APP_TRANSITION);
}
@@ -5109,7 +5108,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
void requestTransitionAndLegacyPrepare(@WindowManager.TransitionType int transit,
@WindowManager.TransitionFlags int flags) {
prepareAppTransition(transit, flags);
- mAtmService.getTransitionController().requestTransitionIfNeeded(transit, flags,
+ mTransitionController.requestTransitionIfNeeded(transit, flags,
null /* trigger */, this);
}
@@ -5117,12 +5116,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
void requestTransitionAndLegacyPrepare(@WindowManager.TransitionType int transit,
@Nullable WindowContainer trigger) {
prepareAppTransition(transit);
- mAtmService.getTransitionController().requestTransitionIfNeeded(transit, 0 /* flags */,
+ mTransitionController.requestTransitionIfNeeded(transit, 0 /* flags */,
trigger, this);
}
void executeAppTransition() {
- mAtmService.getTransitionController().setReady(this);
+ mTransitionController.setReady(this);
if (mAppTransition.isTransitionSet()) {
ProtoLog.w(WM_DEBUG_APP_TRANSITIONS,
"Execute app transition: %s, displayId: %d Callers=%s",
@@ -5171,9 +5170,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
/** Check if pending app transition is for activity / task launch. */
boolean isNextTransitionForward() {
// TODO(b/191375840): decouple "forwardness" from transition system.
- if (mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ if (mTransitionController.isShellTransitionsEnabled()) {
@WindowManager.TransitionType int type =
- mAtmService.getTransitionController().getCollectingTransitionType();
+ mTransitionController.getCollectingTransitionType();
return type == TRANSIT_OPEN || type == TRANSIT_TO_FRONT;
}
return mAppTransition.containsTransitRequest(TRANSIT_OPEN)
@@ -5748,7 +5747,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
}
mWmService.mDisplayNotificationController.dispatchDisplayChanged(
this, getConfiguration());
- if (isReady() && mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ if (isReady() && mTransitionController.isShellTransitionsEnabled()) {
requestChangeTransitionIfNeeded(changes);
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index aa26d4faf854..ccfb174e3d16 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -641,8 +641,7 @@ public class DisplayPolicy {
}
};
displayContent.mAppTransition.registerListenerLocked(mAppTransitionListener);
- mService.mAtmService.getTransitionController().registerLegacyListener(
- mAppTransitionListener);
+ displayContent.mTransitionController.registerLegacyListener(mAppTransitionListener);
mImmersiveModeConfirmation = new ImmersiveModeConfirmation(mContext, looper,
mService.mVrModeEnabled);
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index 225a6ea20f3d..34e81498b1c3 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -413,7 +413,7 @@ public class DisplayRotation {
*/
boolean updateRotationUnchecked(boolean forceUpdate) {
final boolean useShellTransitions =
- mService.mAtmService.getTransitionController().getTransitionPlayer() != null;
+ mDisplayContent.mTransitionController.isShellTransitionsEnabled();
final int displayId = mDisplayContent.getDisplayId();
if (!forceUpdate && !useShellTransitions) {
@@ -586,17 +586,17 @@ public class DisplayRotation {
mService.mH.removeCallbacks(mDisplayRotationHandlerTimeout);
mIsWaitingForRemoteRotation = false;
- if (mService.mAtmService.getTransitionController().getTransitionPlayer() != null) {
- if (!mService.mAtmService.getTransitionController().isCollecting()) {
+ if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) {
+ if (!mDisplayContent.mTransitionController.isCollecting()) {
throw new IllegalStateException("Trying to rotate outside a transition");
}
- mService.mAtmService.getTransitionController().collect(mDisplayContent);
+ mDisplayContent.mTransitionController.collect(mDisplayContent);
// Go through all tasks and collect them before the rotation
// TODO(shell-transitions): move collect() to onConfigurationChange once wallpaper
// handling is synchronized.
mDisplayContent.forAllTasks(task -> {
if (task.isVisible()) {
- mService.mAtmService.getTransitionController().collect(task);
+ mDisplayContent.mTransitionController.collect(task);
}
});
mDisplayContent.getInsetsStateController().addProvidersToTransition();
diff --git a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
index 6560d15ca744..cddb1e7edb3b 100644
--- a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
+++ b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
@@ -135,7 +135,7 @@ class EnsureActivitiesVisibleHelper {
setActivityVisibilityState(child.asActivityRecord(), starting, resumeTopActivity);
}
}
- if (mTaskFragment.mAtmService.getTransitionController().getTransitionPlayer() != null) {
+ if (mTaskFragment.mTransitionController.isShellTransitionsEnabled()) {
mTaskFragment.getDisplayContent().mWallpaperController.adjustWallpaperWindows();
}
}
diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java
index 2c4adcbf1404..c4ca8e364011 100644
--- a/services/core/java/com/android/server/wm/InsetsStateController.java
+++ b/services/core/java/com/android/server/wm/InsetsStateController.java
@@ -254,7 +254,7 @@ class InsetsStateController {
if (p == null) continue;
final WindowContainer wc = p.mWin;
if (wc == null) continue;
- mDisplayContent.mAtmService.getTransitionController().collect(wc);
+ mDisplayContent.mTransitionController.collect(wc);
}
}
diff --git a/services/core/java/com/android/server/wm/PinnedTaskController.java b/services/core/java/com/android/server/wm/PinnedTaskController.java
index 6014a87ae8f7..b4963c5b9f1c 100644
--- a/services/core/java/com/android/server/wm/PinnedTaskController.java
+++ b/services/core/java/com/android/server/wm/PinnedTaskController.java
@@ -211,7 +211,7 @@ class PinnedTaskController {
}
mFreezingTaskConfig = true;
mDestRotatedBounds = new Rect(bounds);
- if (!mService.mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ if (!mDisplayContent.mTransitionController.isShellTransitionsEnabled()) {
continueOrientationChange();
}
}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 40207882d73c..97ea41c2f228 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -2211,7 +2211,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
// display area, so reparent.
rootTask.reparent(taskDisplayArea, true /* onTop */);
}
- mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_PIP, rootTask);
+ rootTask.mTransitionController.requestTransitionIfNeeded(TRANSIT_PIP, rootTask);
// Defer the windowing mode change until after the transition to prevent the activity
// from doing work and changing the activity visuals while animating
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index d89d212bab1f..0819549ad8df 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -4582,7 +4582,7 @@ class Task extends TaskFragment {
// From fullscreen to PiP.
if (topActivity != null && currentMode == WINDOWING_MODE_FULLSCREEN
&& windowingMode == WINDOWING_MODE_PINNED
- && !mAtmService.getTransitionController().isShellTransitionsEnabled()) {
+ && !mTransitionController.isShellTransitionsEnabled()) {
mDisplayContent.mPinnedTaskController
.deferOrientationChangeForEnteringPipFromFullScreenIfNeeded();
}
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 2ad42b29bcb1..44b22c643347 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -1479,7 +1479,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
} else {
prev.schedulePauseTimeout();
// Unset readiness since we now need to wait until this pause is complete.
- mAtmService.getTransitionController().setReady(this, false /* ready */);
+ mTransitionController.setReady(this, false /* ready */);
return true;
}
@@ -2283,7 +2283,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
return false;
}
return isAnimating(TRANSITION | CHILDREN, WindowState.EXIT_ANIMATING_TYPES)
- || mAtmService.getTransitionController().inTransition(this);
+ || inTransition();
}
@Override
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 7893612b5725..0909462585af 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -128,7 +128,7 @@ class WallpaperController {
}
mFindResults.resetTopWallpaper = true;
- if (mService.mAtmService.getTransitionController().getTransitionPlayer() == null) {
+ if (!w.mTransitionController.isShellTransitionsEnabled()) {
if (w.mActivityRecord != null && !w.mActivityRecord.isVisible()
&& !w.mActivityRecord.isAnimating(TRANSITION | PARENTS)) {
// If this window's app token is hidden and not animating, it is of no interest.
diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java
index b54e8b7a7b4e..75c84c44c48e 100644
--- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java
+++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java
@@ -112,7 +112,7 @@ class WallpaperWindowToken extends WindowToken {
setVisibility(visible);
}
final WallpaperController wallpaperController = mDisplayContent.mWallpaperController;
- if (mWmService.mAtmService.getTransitionController().getTransitionPlayer() != null) {
+ if (mTransitionController.isShellTransitionsEnabled()) {
return;
}
@@ -157,12 +157,12 @@ class WallpaperWindowToken extends WindowToken {
*/
void setVisibility(boolean visible) {
// Before setting mVisibleRequested so we can track changes.
- mWmService.mAtmService.getTransitionController().collect(this);
+ mTransitionController.collect(this);
setVisibleRequested(visible);
// If in a transition, defer commits for activities that are going invisible
- if (!visible && (mWmService.mAtmService.getTransitionController().inTransition()
+ if (!visible && (mTransitionController.inTransition()
|| getDisplayContent().mAppTransition.isRunning())) {
return;
}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 38e20555f236..841783d6b8cd 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -197,10 +197,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
* Applied as part of the animation pass in "prepareSurfaces".
*/
protected final SurfaceAnimator mSurfaceAnimator;
- private boolean mAnyParentAnimating;
final SurfaceFreezer mSurfaceFreezer;
protected final WindowManagerService mWmService;
+ final TransitionController mTransitionController;
/**
* Sources which triggered a surface animation on this container. An animation target can be
@@ -331,6 +331,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
WindowContainer(WindowManagerService wms) {
mWmService = wms;
+ mTransitionController = mWmService.mAtmService.getTransitionController();
mPendingTransaction = wms.mTransactionFactory.get();
mSyncTransaction = wms.mTransactionFactory.get();
mSurfaceAnimator = new SurfaceAnimator(this, this::onAnimationFinished, wms);
@@ -1008,7 +1009,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
boolean inTransition() {
- return mWmService.mAtmService.getTransitionController().inTransition(this);
+ return mTransitionController.inTransition(this);
}
void sendAppVisibilityToClients() {
@@ -2310,7 +2311,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
void assignLayer(Transaction t, int layer) {
// Don't assign layers while a transition animation is playing
// TODO(b/173528115): establish robust best-practices around z-order fighting.
- if (mWmService.mAtmService.getTransitionController().isPlaying()) return;
+ if (mTransitionController.isPlaying()) return;
final boolean changed = layer != mLastLayer || mLastRelativeToLayer != null;
if (mSurfaceControl != null && changed) {
setLayer(t, layer);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 0e99c0f1bad0..c77cd509ca4f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1804,7 +1804,7 @@ public class WindowManagerService extends IWindowManager.Stub
winAnimator.mEnterAnimationPending = true;
winAnimator.mEnteringAnimation = true;
// Check if we need to prepare a transition for replacing window first.
- if (mAtmService.getTransitionController().getTransitionPlayer() == null
+ if (!win.mTransitionController.isShellTransitionsEnabled()
&& activity != null && activity.isVisible()
&& !prepareWindowReplacementTransition(activity)) {
// If not, check if need to set up a dummy transition during display freeze
@@ -2569,7 +2569,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (win.mAttrs.type == TYPE_APPLICATION_STARTING) {
transit = WindowManagerPolicy.TRANSIT_PREVIEW_DONE;
}
- if (mAtmService.getTransitionController().inTransition(win)) {
+ if (win.inTransition()) {
focusMayChange = true;
win.mAnimatingExit = true;
} else if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) {
@@ -4051,7 +4051,7 @@ public class WindowManagerService extends IWindowManager.Stub
final boolean pendingRemoteRotation = rotationChanged
&& (displayContent.getDisplayRotation().isWaitingForRemoteRotation()
- || mAtmService.getTransitionController().isCollecting());
+ || displayContent.mTransitionController.isCollecting());
// Even if alwaysSend, we are waiting for a transition or remote to provide
// rotated configuration, so we can't update configuration yet.
if (!pendingRemoteRotation) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index d629065e105a..5f9d4f5182bc 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1175,8 +1175,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (WindowManager.LayoutParams.isSystemAlertWindowType(mAttrs.type)) {
return TouchOcclusionMode.USE_OPACITY;
}
- if (isAnimating(PARENTS | TRANSITION, ANIMATION_TYPE_ALL)
- || mWmService.mAtmService.getTransitionController().inTransition(this)) {
+ if (isAnimating(PARENTS | TRANSITION, ANIMATION_TYPE_ALL) || inTransition()) {
return TouchOcclusionMode.USE_OPACITY;
}
return TouchOcclusionMode.BLOCK_UNTRUSTED;
@@ -2326,7 +2325,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
&& (mWindowFrames.mRelFrame.top != mWindowFrames.mLastRelFrame.top
|| mWindowFrames.mRelFrame.left != mWindowFrames.mLastRelFrame.left)
&& (!mIsChildWindow || !getParentWindow().hasMoved())
- && !mWmService.mAtmService.getTransitionController().isCollecting();
+ && !mTransitionController.isCollecting();
}
boolean isObscuringDisplay() {
@@ -2712,8 +2711,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// Don't allow transient-launch activities to take IME.
if (rootTask != null && mActivityRecord != null
- && mWmService.mAtmService.getTransitionController().isTransientLaunch(
- mActivityRecord)) {
+ && mTransitionController.isTransientLaunch(mActivityRecord)) {
return false;
}
@@ -6075,7 +6073,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
if (mActivityRecord != null
- && mWmService.mAtmService.getTransitionController().isShellTransitionsEnabled()
+ && mTransitionController.isShellTransitionsEnabled()
&& mAttrs.type == TYPE_APPLICATION_STARTING) {
mWmService.mAtmService.mTaskSupervisor.getActivityMetricsLogger()
.notifyStartingWindowDrawn(mActivityRecord);