Loading services/core/java/com/android/server/wm/ActivityRecord.java +0 −27 Original line number Diff line number Diff line Loading @@ -333,7 +333,6 @@ import android.view.IAppTransitionAnimationSpecsFuture; import android.view.InputApplicationHandle; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.WindowInsets; Loading Loading @@ -380,7 +379,6 @@ import com.android.server.uri.UriPermissionOwner; import com.android.server.wm.ActivityMetricsLogger.TransitionInfoSnapshot; import com.android.server.wm.SurfaceAnimator.AnimationType; import com.android.server.wm.WindowManagerService.H; import com.android.server.wm.utils.InsetUtils; import com.android.window.flags.Flags; import dalvik.annotation.optimization.NeverCompile; Loading Loading @@ -9833,31 +9831,6 @@ final class ActivityRecord extends WindowToken { } } @Override RemoteAnimationTarget createRemoteAnimationTarget( RemoteAnimationController.RemoteAnimationRecord record) { final WindowState mainWindow = findMainWindow(); if (task == null || mainWindow == null) { return null; } final Rect insets = mainWindow.getInsetsStateWithVisibilityOverride().calculateInsets( task.getBounds(), Type.systemBars(), false /* ignoreVisibility */).toRect(); InsetUtils.addInsets(insets, getLetterboxInsets()); final RemoteAnimationTarget target = new RemoteAnimationTarget(task.mTaskId, record.getMode(), record.mAdapter.mCapturedLeash, !fillsParent(), new Rect(), insets, getPrefixOrderIndex(), record.mAdapter.mPosition, record.mAdapter.mLocalBounds, record.mAdapter.mEndBounds, task.getWindowConfiguration(), false /*isNotInRecents*/, record.mThumbnailAdapter != null ? record.mThumbnailAdapter.mCapturedLeash : null, record.mStartBounds, task.getTaskInfo(), checkEnterPictureInPictureAppOpsState()); target.setShowBackdrop(record.mShowBackdrop); target.setWillShowImeOnTarget(mStartingData != null && mStartingData.hasImeSurface()); target.hasAnimatingParent = record.hasAnimatingParent(); return target; } @Override boolean canCreateRemoteAnimationTarget() { return true; Loading services/core/java/com/android/server/wm/AppTransition.java +1 −28 Original line number Diff line number Diff line Loading @@ -231,8 +231,6 @@ public class AppTransition implements Dump { private final int mDefaultWindowAnimationStyleResId; private boolean mOverrideTaskTransition; private RemoteAnimationController mRemoteAnimationController; final Handler mHandler; final Runnable mHandleAppTransitionTimeoutRunnable = () -> handleAppTransitionTimeout(); Loading Loading @@ -398,9 +396,7 @@ public class AppTransition implements Dump { : SystemClock.uptimeMillis(), AnimationAdapter.STATUS_BAR_TRANSITION_DURATION); if (mRemoteAnimationController != null) { mRemoteAnimationController.goodToGo(transit); } else if ((isTaskOpenTransitOld(transit) || transit == TRANSIT_OLD_WALLPAPER_CLOSE) if ((isTaskOpenTransitOld(transit) || transit == TRANSIT_OLD_WALLPAPER_CLOSE) && topOpeningAnim != null) { if (mDisplayContent.getDisplayPolicy().shouldAttachNavBarToAppDuringTransition()) { final NavBarFadeAnimationController controller = Loading @@ -424,7 +420,6 @@ public class AppTransition implements Dump { mNextAppTransitionType = NEXT_TRANSIT_TYPE_NONE; mNextAppTransitionOverrideRequested = false; mNextAppTransitionAnimationsSpecs.clear(); mRemoteAnimationController = null; mNextAppTransitionAnimationsSpecsFuture = null; mDefaultNextAppTransitionAnimationSpec = null; mAnimationFinishedCallback = null; Loading @@ -442,13 +437,6 @@ public class AppTransition implements Dump { final boolean keyguardGoingAwayCancelled = mNextAppTransitionRequests.contains( TRANSIT_KEYGUARD_GOING_AWAY); // The RemoteAnimationControl didn't register AppTransitionListener and // only initialized the finish and timeout callback when goodToGo(). // So cancel the remote animation here to prevent the animation can't do // finish after transition state cleared. if (mRemoteAnimationController != null) { mRemoteAnimationController.cancelAnimation("freeze"); } mNextAppTransitionRequests.clear(); clear(); setReady(); Loading Loading @@ -719,10 +707,6 @@ public class AppTransition implements Dump { && !mNextAppTransitionRequests.contains(TRANSIT_KEYGUARD_GOING_AWAY); } RemoteAnimationController getRemoteAnimationController() { return mRemoteAnimationController; } /** * * @param frame These are the bounds of the window when it finishes the animation. This is where Loading Loading @@ -1082,17 +1066,6 @@ public class AppTransition implements Dump { void overridePendingAppTransitionRemote(RemoteAnimationAdapter remoteAnimationAdapter, boolean sync, boolean isActivityEmbedding) { ProtoLog.i(WM_DEBUG_APP_TRANSITIONS, "Override pending remote transitionSet=%b adapter=%s", isTransitionSet(), remoteAnimationAdapter); if (isTransitionSet() && !mNextAppTransitionIsSync) { // ActivityEmbedding animation will run by the app process for which we want to respect // the app override for whether or not to show background color. clear(!isActivityEmbedding /* clearAppOverride */); mNextAppTransitionType = NEXT_TRANSIT_TYPE_REMOTE; mRemoteAnimationController = new RemoteAnimationController(mService, mDisplayContent, remoteAnimationAdapter, mHandler, isActivityEmbedding); mNextAppTransitionIsSync = sync; } } void overrideInPlaceAppTransition(String packageName, int anim) { Loading services/core/java/com/android/server/wm/NonAppWindowAnimationAdapter.javadeleted 100644 → 0 +0 −227 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.wm; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; import static android.view.WindowManager.TRANSIT_OLD_TASK_OPEN; import static android.view.WindowManager.TRANSIT_OLD_TASK_TO_FRONT; import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_CLOSE; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_REMOTE_ANIMATIONS; import static com.android.server.wm.AnimationAdapterProto.REMOTE; import static com.android.server.wm.RemoteAnimationAdapterWrapperProto.TARGET; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION; import android.annotation.NonNull; import android.graphics.Rect; import android.os.SystemClock; import android.util.proto.ProtoOutputStream; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.WindowManager; import com.android.internal.protolog.ProtoLog; import com.android.server.policy.WindowManagerPolicy; import java.io.PrintWriter; import java.util.ArrayList; class NonAppWindowAnimationAdapter implements AnimationAdapter { private final WindowContainer mWindowContainer; private RemoteAnimationTarget mTarget; private SurfaceControl mCapturedLeash; private SurfaceAnimator.OnAnimationFinishedCallback mCapturedLeashFinishCallback; private @SurfaceAnimator.AnimationType int mLastAnimationType; private long mDurationHint; private long mStatusBarTransitionDelay; @Override public boolean getShowWallpaper() { return false; } NonAppWindowAnimationAdapter(WindowContainer w, long durationHint, long statusBarTransitionDelay) { mWindowContainer = w; mDurationHint = durationHint; mStatusBarTransitionDelay = statusBarTransitionDelay; } static RemoteAnimationTarget[] startNonAppWindowAnimations(WindowManagerService service, DisplayContent displayContent, @WindowManager.TransitionOldType int transit, long durationHint, long statusBarTransitionDelay, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final ArrayList<RemoteAnimationTarget> targets = new ArrayList<>(); if (shouldStartNonAppWindowAnimationsForKeyguardExit(transit)) { startNonAppWindowAnimationsForKeyguardExit( service, durationHint, statusBarTransitionDelay, targets, adaptersOut); } else if (shouldAttachNavBarToApp(service, displayContent, transit)) { startNavigationBarWindowAnimation( displayContent, durationHint, statusBarTransitionDelay, targets, adaptersOut); } return targets.toArray(new RemoteAnimationTarget[targets.size()]); } static boolean shouldStartNonAppWindowAnimationsForKeyguardExit( @WindowManager.TransitionOldType int transit) { return transit == TRANSIT_OLD_KEYGUARD_GOING_AWAY || transit == TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; } static boolean shouldAttachNavBarToApp(WindowManagerService service, DisplayContent displayContent, @WindowManager.TransitionOldType int transit) { return (transit == TRANSIT_OLD_TASK_OPEN || transit == TRANSIT_OLD_TASK_TO_FRONT || transit == TRANSIT_OLD_WALLPAPER_CLOSE) && displayContent.getDisplayPolicy().shouldAttachNavBarToAppDuringTransition() && displayContent.getAsyncRotationController() == null; } /** * Creates and starts remote animations for all the visible non app windows. * * @return RemoteAnimationTarget[] targets for all the visible non app windows */ private static void startNonAppWindowAnimationsForKeyguardExit(WindowManagerService service, long durationHint, long statusBarTransitionDelay, ArrayList<RemoteAnimationTarget> targets, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final WindowManagerPolicy policy = service.mPolicy; service.mRoot.forAllWindows(nonAppWindow -> { // Animation on the IME window is controlled via Insets. if (nonAppWindow.mActivityRecord == null && nonAppWindow.canBeHiddenByKeyguard() && nonAppWindow.wouldBeVisibleIfPolicyIgnored() && !nonAppWindow.isVisible() && nonAppWindow != service.mRoot.getCurrentInputMethodWindow()) { final NonAppWindowAnimationAdapter nonAppAdapter = new NonAppWindowAnimationAdapter( nonAppWindow, durationHint, statusBarTransitionDelay); adaptersOut.add(nonAppAdapter); nonAppWindow.startAnimation(nonAppWindow.getPendingTransaction(), nonAppAdapter, false /* hidden */, ANIMATION_TYPE_WINDOW_ANIMATION); targets.add(nonAppAdapter.createRemoteAnimationTarget()); } }, true /* traverseTopToBottom */); } /** * Creates and starts remote animation for the navigation bar windows. * * @return RemoteAnimationTarget[] targets for all the visible non app windows */ private static void startNavigationBarWindowAnimation(DisplayContent displayContent, long durationHint, long statusBarTransitionDelay, ArrayList<RemoteAnimationTarget> targets, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final WindowState navWindow = displayContent.getDisplayPolicy().getNavigationBar(); final NonAppWindowAnimationAdapter nonAppAdapter = new NonAppWindowAnimationAdapter( navWindow.mToken, durationHint, statusBarTransitionDelay); adaptersOut.add(nonAppAdapter); navWindow.mToken.startAnimation(navWindow.mToken.getPendingTransaction(), nonAppAdapter, false /* hidden */, ANIMATION_TYPE_WINDOW_ANIMATION); targets.add(nonAppAdapter.createRemoteAnimationTarget()); } /** * Create a remote animation target for this animation adapter. */ RemoteAnimationTarget createRemoteAnimationTarget() { mTarget = new RemoteAnimationTarget(-1, -1, getLeash(), false, new Rect(), null, mWindowContainer.getPrefixOrderIndex(), mWindowContainer.getLastSurfacePosition(), mWindowContainer.getBounds(), null, mWindowContainer.getWindowConfiguration(), true, null, null, null, false, mWindowContainer.getWindowType()); return mTarget; } @Override public void startAnimation(SurfaceControl animationLeash, SurfaceControl.Transaction t, int type, @NonNull SurfaceAnimator.OnAnimationFinishedCallback finishCallback) { ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "startAnimation"); mCapturedLeash = animationLeash; mCapturedLeashFinishCallback = finishCallback; mLastAnimationType = type; } /** * @return the callback to call to clean up when the animation has finished. */ SurfaceAnimator.OnAnimationFinishedCallback getLeashFinishedCallback() { return mCapturedLeashFinishCallback; } /** * @return the type of animation. */ @SurfaceAnimator.AnimationType int getLastAnimationType() { return mLastAnimationType; } WindowContainer getWindowContainer() { return mWindowContainer; } @Override public long getDurationHint() { return mDurationHint; } @Override public long getStatusBarTransitionsStartTime() { return SystemClock.uptimeMillis() + mStatusBarTransitionDelay; } /** * @return the leash for this animation (only valid after the non app window surface animation * has started). */ SurfaceControl getLeash() { return mCapturedLeash; } @Override public void onAnimationCancelled(SurfaceControl animationLeash) { ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "onAnimationCancelled"); } @Override public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("windowContainer="); pw.println(mWindowContainer); if (mTarget != null) { pw.print(prefix); pw.println("Target:"); mTarget.dump(pw, prefix + " "); } else { pw.print(prefix); pw.println("Target: null"); } } @Override public void dumpDebug(ProtoOutputStream proto) { final long token = proto.start(REMOTE); if (mTarget != null) { mTarget.dumpDebug(proto, TARGET); } proto.end(token); } } services/core/java/com/android/server/wm/RemoteAnimationController.javadeleted 100644 → 0 +0 −636 File deleted.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/wm/TaskDisplayArea.java +0 −8 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.graphics.Color; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.WindowManager; Loading Loading @@ -776,13 +775,6 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { return needsZBoost[0]; } @Override RemoteAnimationTarget createRemoteAnimationTarget( RemoteAnimationController.RemoteAnimationRecord record) { final ActivityRecord activity = getTopMostActivity(); return activity != null ? activity.createRemoteAnimationTarget(record) : null; } void setBackgroundColor(@ColorInt int colorInt) { setBackgroundColor(colorInt, false /* restore */); } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +0 −27 Original line number Diff line number Diff line Loading @@ -333,7 +333,6 @@ import android.view.IAppTransitionAnimationSpecsFuture; import android.view.InputApplicationHandle; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.WindowInsets; Loading Loading @@ -380,7 +379,6 @@ import com.android.server.uri.UriPermissionOwner; import com.android.server.wm.ActivityMetricsLogger.TransitionInfoSnapshot; import com.android.server.wm.SurfaceAnimator.AnimationType; import com.android.server.wm.WindowManagerService.H; import com.android.server.wm.utils.InsetUtils; import com.android.window.flags.Flags; import dalvik.annotation.optimization.NeverCompile; Loading Loading @@ -9833,31 +9831,6 @@ final class ActivityRecord extends WindowToken { } } @Override RemoteAnimationTarget createRemoteAnimationTarget( RemoteAnimationController.RemoteAnimationRecord record) { final WindowState mainWindow = findMainWindow(); if (task == null || mainWindow == null) { return null; } final Rect insets = mainWindow.getInsetsStateWithVisibilityOverride().calculateInsets( task.getBounds(), Type.systemBars(), false /* ignoreVisibility */).toRect(); InsetUtils.addInsets(insets, getLetterboxInsets()); final RemoteAnimationTarget target = new RemoteAnimationTarget(task.mTaskId, record.getMode(), record.mAdapter.mCapturedLeash, !fillsParent(), new Rect(), insets, getPrefixOrderIndex(), record.mAdapter.mPosition, record.mAdapter.mLocalBounds, record.mAdapter.mEndBounds, task.getWindowConfiguration(), false /*isNotInRecents*/, record.mThumbnailAdapter != null ? record.mThumbnailAdapter.mCapturedLeash : null, record.mStartBounds, task.getTaskInfo(), checkEnterPictureInPictureAppOpsState()); target.setShowBackdrop(record.mShowBackdrop); target.setWillShowImeOnTarget(mStartingData != null && mStartingData.hasImeSurface()); target.hasAnimatingParent = record.hasAnimatingParent(); return target; } @Override boolean canCreateRemoteAnimationTarget() { return true; Loading
services/core/java/com/android/server/wm/AppTransition.java +1 −28 Original line number Diff line number Diff line Loading @@ -231,8 +231,6 @@ public class AppTransition implements Dump { private final int mDefaultWindowAnimationStyleResId; private boolean mOverrideTaskTransition; private RemoteAnimationController mRemoteAnimationController; final Handler mHandler; final Runnable mHandleAppTransitionTimeoutRunnable = () -> handleAppTransitionTimeout(); Loading Loading @@ -398,9 +396,7 @@ public class AppTransition implements Dump { : SystemClock.uptimeMillis(), AnimationAdapter.STATUS_BAR_TRANSITION_DURATION); if (mRemoteAnimationController != null) { mRemoteAnimationController.goodToGo(transit); } else if ((isTaskOpenTransitOld(transit) || transit == TRANSIT_OLD_WALLPAPER_CLOSE) if ((isTaskOpenTransitOld(transit) || transit == TRANSIT_OLD_WALLPAPER_CLOSE) && topOpeningAnim != null) { if (mDisplayContent.getDisplayPolicy().shouldAttachNavBarToAppDuringTransition()) { final NavBarFadeAnimationController controller = Loading @@ -424,7 +420,6 @@ public class AppTransition implements Dump { mNextAppTransitionType = NEXT_TRANSIT_TYPE_NONE; mNextAppTransitionOverrideRequested = false; mNextAppTransitionAnimationsSpecs.clear(); mRemoteAnimationController = null; mNextAppTransitionAnimationsSpecsFuture = null; mDefaultNextAppTransitionAnimationSpec = null; mAnimationFinishedCallback = null; Loading @@ -442,13 +437,6 @@ public class AppTransition implements Dump { final boolean keyguardGoingAwayCancelled = mNextAppTransitionRequests.contains( TRANSIT_KEYGUARD_GOING_AWAY); // The RemoteAnimationControl didn't register AppTransitionListener and // only initialized the finish and timeout callback when goodToGo(). // So cancel the remote animation here to prevent the animation can't do // finish after transition state cleared. if (mRemoteAnimationController != null) { mRemoteAnimationController.cancelAnimation("freeze"); } mNextAppTransitionRequests.clear(); clear(); setReady(); Loading Loading @@ -719,10 +707,6 @@ public class AppTransition implements Dump { && !mNextAppTransitionRequests.contains(TRANSIT_KEYGUARD_GOING_AWAY); } RemoteAnimationController getRemoteAnimationController() { return mRemoteAnimationController; } /** * * @param frame These are the bounds of the window when it finishes the animation. This is where Loading Loading @@ -1082,17 +1066,6 @@ public class AppTransition implements Dump { void overridePendingAppTransitionRemote(RemoteAnimationAdapter remoteAnimationAdapter, boolean sync, boolean isActivityEmbedding) { ProtoLog.i(WM_DEBUG_APP_TRANSITIONS, "Override pending remote transitionSet=%b adapter=%s", isTransitionSet(), remoteAnimationAdapter); if (isTransitionSet() && !mNextAppTransitionIsSync) { // ActivityEmbedding animation will run by the app process for which we want to respect // the app override for whether or not to show background color. clear(!isActivityEmbedding /* clearAppOverride */); mNextAppTransitionType = NEXT_TRANSIT_TYPE_REMOTE; mRemoteAnimationController = new RemoteAnimationController(mService, mDisplayContent, remoteAnimationAdapter, mHandler, isActivityEmbedding); mNextAppTransitionIsSync = sync; } } void overrideInPlaceAppTransition(String packageName, int anim) { Loading
services/core/java/com/android/server/wm/NonAppWindowAnimationAdapter.javadeleted 100644 → 0 +0 −227 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.wm; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; import static android.view.WindowManager.TRANSIT_OLD_TASK_OPEN; import static android.view.WindowManager.TRANSIT_OLD_TASK_TO_FRONT; import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_CLOSE; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_REMOTE_ANIMATIONS; import static com.android.server.wm.AnimationAdapterProto.REMOTE; import static com.android.server.wm.RemoteAnimationAdapterWrapperProto.TARGET; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION; import android.annotation.NonNull; import android.graphics.Rect; import android.os.SystemClock; import android.util.proto.ProtoOutputStream; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.WindowManager; import com.android.internal.protolog.ProtoLog; import com.android.server.policy.WindowManagerPolicy; import java.io.PrintWriter; import java.util.ArrayList; class NonAppWindowAnimationAdapter implements AnimationAdapter { private final WindowContainer mWindowContainer; private RemoteAnimationTarget mTarget; private SurfaceControl mCapturedLeash; private SurfaceAnimator.OnAnimationFinishedCallback mCapturedLeashFinishCallback; private @SurfaceAnimator.AnimationType int mLastAnimationType; private long mDurationHint; private long mStatusBarTransitionDelay; @Override public boolean getShowWallpaper() { return false; } NonAppWindowAnimationAdapter(WindowContainer w, long durationHint, long statusBarTransitionDelay) { mWindowContainer = w; mDurationHint = durationHint; mStatusBarTransitionDelay = statusBarTransitionDelay; } static RemoteAnimationTarget[] startNonAppWindowAnimations(WindowManagerService service, DisplayContent displayContent, @WindowManager.TransitionOldType int transit, long durationHint, long statusBarTransitionDelay, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final ArrayList<RemoteAnimationTarget> targets = new ArrayList<>(); if (shouldStartNonAppWindowAnimationsForKeyguardExit(transit)) { startNonAppWindowAnimationsForKeyguardExit( service, durationHint, statusBarTransitionDelay, targets, adaptersOut); } else if (shouldAttachNavBarToApp(service, displayContent, transit)) { startNavigationBarWindowAnimation( displayContent, durationHint, statusBarTransitionDelay, targets, adaptersOut); } return targets.toArray(new RemoteAnimationTarget[targets.size()]); } static boolean shouldStartNonAppWindowAnimationsForKeyguardExit( @WindowManager.TransitionOldType int transit) { return transit == TRANSIT_OLD_KEYGUARD_GOING_AWAY || transit == TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER; } static boolean shouldAttachNavBarToApp(WindowManagerService service, DisplayContent displayContent, @WindowManager.TransitionOldType int transit) { return (transit == TRANSIT_OLD_TASK_OPEN || transit == TRANSIT_OLD_TASK_TO_FRONT || transit == TRANSIT_OLD_WALLPAPER_CLOSE) && displayContent.getDisplayPolicy().shouldAttachNavBarToAppDuringTransition() && displayContent.getAsyncRotationController() == null; } /** * Creates and starts remote animations for all the visible non app windows. * * @return RemoteAnimationTarget[] targets for all the visible non app windows */ private static void startNonAppWindowAnimationsForKeyguardExit(WindowManagerService service, long durationHint, long statusBarTransitionDelay, ArrayList<RemoteAnimationTarget> targets, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final WindowManagerPolicy policy = service.mPolicy; service.mRoot.forAllWindows(nonAppWindow -> { // Animation on the IME window is controlled via Insets. if (nonAppWindow.mActivityRecord == null && nonAppWindow.canBeHiddenByKeyguard() && nonAppWindow.wouldBeVisibleIfPolicyIgnored() && !nonAppWindow.isVisible() && nonAppWindow != service.mRoot.getCurrentInputMethodWindow()) { final NonAppWindowAnimationAdapter nonAppAdapter = new NonAppWindowAnimationAdapter( nonAppWindow, durationHint, statusBarTransitionDelay); adaptersOut.add(nonAppAdapter); nonAppWindow.startAnimation(nonAppWindow.getPendingTransaction(), nonAppAdapter, false /* hidden */, ANIMATION_TYPE_WINDOW_ANIMATION); targets.add(nonAppAdapter.createRemoteAnimationTarget()); } }, true /* traverseTopToBottom */); } /** * Creates and starts remote animation for the navigation bar windows. * * @return RemoteAnimationTarget[] targets for all the visible non app windows */ private static void startNavigationBarWindowAnimation(DisplayContent displayContent, long durationHint, long statusBarTransitionDelay, ArrayList<RemoteAnimationTarget> targets, ArrayList<NonAppWindowAnimationAdapter> adaptersOut) { final WindowState navWindow = displayContent.getDisplayPolicy().getNavigationBar(); final NonAppWindowAnimationAdapter nonAppAdapter = new NonAppWindowAnimationAdapter( navWindow.mToken, durationHint, statusBarTransitionDelay); adaptersOut.add(nonAppAdapter); navWindow.mToken.startAnimation(navWindow.mToken.getPendingTransaction(), nonAppAdapter, false /* hidden */, ANIMATION_TYPE_WINDOW_ANIMATION); targets.add(nonAppAdapter.createRemoteAnimationTarget()); } /** * Create a remote animation target for this animation adapter. */ RemoteAnimationTarget createRemoteAnimationTarget() { mTarget = new RemoteAnimationTarget(-1, -1, getLeash(), false, new Rect(), null, mWindowContainer.getPrefixOrderIndex(), mWindowContainer.getLastSurfacePosition(), mWindowContainer.getBounds(), null, mWindowContainer.getWindowConfiguration(), true, null, null, null, false, mWindowContainer.getWindowType()); return mTarget; } @Override public void startAnimation(SurfaceControl animationLeash, SurfaceControl.Transaction t, int type, @NonNull SurfaceAnimator.OnAnimationFinishedCallback finishCallback) { ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "startAnimation"); mCapturedLeash = animationLeash; mCapturedLeashFinishCallback = finishCallback; mLastAnimationType = type; } /** * @return the callback to call to clean up when the animation has finished. */ SurfaceAnimator.OnAnimationFinishedCallback getLeashFinishedCallback() { return mCapturedLeashFinishCallback; } /** * @return the type of animation. */ @SurfaceAnimator.AnimationType int getLastAnimationType() { return mLastAnimationType; } WindowContainer getWindowContainer() { return mWindowContainer; } @Override public long getDurationHint() { return mDurationHint; } @Override public long getStatusBarTransitionsStartTime() { return SystemClock.uptimeMillis() + mStatusBarTransitionDelay; } /** * @return the leash for this animation (only valid after the non app window surface animation * has started). */ SurfaceControl getLeash() { return mCapturedLeash; } @Override public void onAnimationCancelled(SurfaceControl animationLeash) { ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "onAnimationCancelled"); } @Override public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("windowContainer="); pw.println(mWindowContainer); if (mTarget != null) { pw.print(prefix); pw.println("Target:"); mTarget.dump(pw, prefix + " "); } else { pw.print(prefix); pw.println("Target: null"); } } @Override public void dumpDebug(ProtoOutputStream proto) { final long token = proto.start(REMOTE); if (mTarget != null) { mTarget.dumpDebug(proto, TARGET); } proto.end(token); } }
services/core/java/com/android/server/wm/RemoteAnimationController.javadeleted 100644 → 0 +0 −636 File deleted.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/wm/TaskDisplayArea.java +0 −8 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.graphics.Color; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.view.WindowManager; Loading Loading @@ -776,13 +775,6 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { return needsZBoost[0]; } @Override RemoteAnimationTarget createRemoteAnimationTarget( RemoteAnimationController.RemoteAnimationRecord record) { final ActivityRecord activity = getTopMostActivity(); return activity != null ? activity.createRemoteAnimationTarget(record) : null; } void setBackgroundColor(@ColorInt int colorInt) { setBackgroundColor(colorInt, false /* restore */); } Loading