From e598ab96e27a3450353bc5fabb4c87506dd6be5c Mon Sep 17 00:00:00 2001 From: Vadim Caen Date: Wed, 22 Sep 2021 16:41:12 +0200 Subject: [PATCH] Cleanup unused code in AppTransition Test: N/A Bug: N/A Change-Id: If96c3e3ab62f168f04220b407aa73c507b3b7d75 --- .../com/android/server/wm/AppTransition.java | 210 +----------------- .../server/wm/WindowManagerService.java | 2 - 2 files changed, 1 insertion(+), 211 deletions(-) diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 929ac56f740ed..70aaec9111865 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -81,7 +81,6 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; -import static com.android.internal.policy.TransitionAnimation.prepareThumbnailAnimationWithDuration; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE; @@ -97,7 +96,6 @@ import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_NONE; import android.annotation.DrawableRes; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.res.Configuration; @@ -126,9 +124,6 @@ import android.view.WindowManager.TransitionType; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; -import android.view.animation.AnimationUtils; -import android.view.animation.Interpolator; -import android.view.animation.PathInterpolator; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; @@ -151,25 +146,13 @@ import java.util.concurrent.Executors; // made visible or hidden at the next transition. public class AppTransition implements Dump { private static final String TAG = TAG_WITH_CLASS_NAME ? "AppTransition" : TAG_WM; - private static final int CLIP_REVEAL_TRANSLATION_Y_DP = 8; - - /** Fraction of animation at which the recents thumbnail stays completely transparent */ - private static final float RECENTS_THUMBNAIL_FADEIN_FRACTION = 0.5f; - /** Fraction of animation at which the recents thumbnail becomes completely transparent */ - private static final float RECENTS_THUMBNAIL_FADEOUT_FRACTION = 0.5f; static final int DEFAULT_APP_TRANSITION_DURATION = 336; - /** Interpolator to be used for animations that respond directly to a touch */ - static final Interpolator TOUCH_RESPONSE_INTERPOLATOR = - new PathInterpolator(0.3f, 0f, 0.1f, 1f); - /** * Maximum duration for the clip reveal animation. This is used when there is a lot of movement * involved, to make it more understandable. */ - private static final int MAX_CLIP_REVEAL_TRANSITION_DURATION = 420; - private static final int THUMBNAIL_APP_TRANSITION_DURATION = 336; private static final long APP_TRANSITION_TIMEOUT_MS = 5000; static final int MAX_APP_TRANSITION_DURATION = 3 * 1000; // 3 secs. @@ -225,11 +208,6 @@ public class AppTransition implements Dump { private boolean mNextAppTransitionAnimationsSpecsPending; private AppTransitionAnimationSpec mDefaultNextAppTransitionAnimationSpec; - private Rect mNextAppTransitionInsets = new Rect(); - - private Rect mTmpFromClipRect = new Rect(); - private Rect mTmpToClipRect = new Rect(); - private final Rect mTmpRect = new Rect(); private final static int APP_STATE_IDLE = 0; @@ -238,29 +216,11 @@ public class AppTransition implements Dump { private final static int APP_STATE_TIMEOUT = 3; private int mAppTransitionState = APP_STATE_IDLE; - private final int mConfigShortAnimTime; - private final Interpolator mDecelerateInterpolator; - private final Interpolator mThumbnailFadeInInterpolator; - private final Interpolator mThumbnailFadeOutInterpolator; - private final Interpolator mLinearOutSlowInInterpolator; - private final Interpolator mFastOutLinearInInterpolator; - private final Interpolator mFastOutSlowInInterpolator; - private final Interpolator mClipHorizontalInterpolator = new PathInterpolator(0, 0, 0.4f, 1f); - - private final int mClipRevealTranslationY; - - private int mCurrentUserId = 0; - private long mLastClipRevealTransitionDuration = DEFAULT_APP_TRANSITION_DURATION; - private final ArrayList mListeners = new ArrayList<>(); private KeyguardExitAnimationStartListener mKeyguardExitAnimationStartListener; private final ExecutorService mDefaultExecutor = Executors.newSingleThreadExecutor(); - private int mLastClipRevealMaxTranslation; - private boolean mLastHadClipReveal; - private final boolean mGridLayoutRecentsEnabled; - private final boolean mLowRamRecentsEnabled; private final int mDefaultWindowAnimationStyleResId; private boolean mOverrideTaskTransition; @@ -276,43 +236,8 @@ public class AppTransition implements Dump { mHandler = new Handler(service.mH.getLooper()); mDisplayContent = displayContent; mTransitionAnimation = new TransitionAnimation(context, DEBUG_ANIM, TAG); - mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.linear_out_slow_in); - mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.fast_out_linear_in); - mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.fast_out_slow_in); - mConfigShortAnimTime = context.getResources().getInteger( - com.android.internal.R.integer.config_shortAnimTime); - mDecelerateInterpolator = AnimationUtils.loadInterpolator(context, - com.android.internal.R.interpolator.decelerate_cubic); - mThumbnailFadeInInterpolator = new Interpolator() { - @Override - public float getInterpolation(float input) { - // Linear response for first fraction, then complete after that. - if (input < RECENTS_THUMBNAIL_FADEIN_FRACTION) { - return 0f; - } - float t = (input - RECENTS_THUMBNAIL_FADEIN_FRACTION) / - (1f - RECENTS_THUMBNAIL_FADEIN_FRACTION); - return mFastOutLinearInInterpolator.getInterpolation(t); - } - }; - mThumbnailFadeOutInterpolator = new Interpolator() { - @Override - public float getInterpolation(float input) { - // Linear response for first fraction, then complete after that. - if (input < RECENTS_THUMBNAIL_FADEOUT_FRACTION) { - float t = input / RECENTS_THUMBNAIL_FADEOUT_FRACTION; - return mLinearOutSlowInInterpolator.getInterpolation(t); - } - return 1f; - } - }; - mClipRevealTranslationY = (int) (CLIP_REVEAL_TRANSLATION_Y_DP - * mContext.getResources().getDisplayMetrics().density); + mGridLayoutRecentsEnabled = SystemProperties.getBoolean("ro.recents.grid", false); - mLowRamRecentsEnabled = ActivityManager.isLowRamDeviceStatic(); final TypedArray windowStyle = mContext.getTheme().obtainStyledAttributes( com.android.internal.R.styleable.Window); @@ -421,9 +346,6 @@ public class AppTransition implements Dump { if (!isRunning()) { setAppTransitionState(APP_STATE_IDLE); notifyAppTransitionPendingLocked(); - mLastHadClipReveal = false; - mLastClipRevealMaxTranslation = 0; - mLastClipRevealTransitionDuration = DEFAULT_APP_TRANSITION_DURATION; return true; } return false; @@ -599,70 +521,12 @@ public class AppTransition implements Dump { } } - void getNextAppTransitionStartRect(WindowContainer container, Rect rect) { - AppTransitionAnimationSpec spec = mNextAppTransitionAnimationsSpecs.get( - container.hashCode()); - if (spec == null) { - spec = mDefaultNextAppTransitionAnimationSpec; - } - if (spec == null || spec.rect == null) { - Slog.e(TAG, "Starting rect for container: " + container - + " requested, but not available", new Throwable()); - rect.setEmpty(); - } else { - rect.set(spec.rect); - } - } - private void putDefaultNextAppTransitionCoordinates(int left, int top, int width, int height, HardwareBuffer buffer) { mDefaultNextAppTransitionAnimationSpec = new AppTransitionAnimationSpec(-1 /* taskId */, buffer, new Rect(left, top, left + width, top + height)); } - /** - * Calculates the duration for the clip reveal animation. If the clip is "cut off", meaning that - * the start rect is outside of the target rect, and there is a lot of movement going on. - * - * @param cutOff whether the start rect was not fully contained by the end rect - * @param translationX the total translation the surface moves in x direction - * @param translationY the total translation the surfaces moves in y direction - * @param displayFrame our display frame - * - * @return the duration of the clip reveal animation, in milliseconds - */ - private long calculateClipRevealTransitionDuration(boolean cutOff, float translationX, - float translationY, Rect displayFrame) { - if (!cutOff) { - return DEFAULT_APP_TRANSITION_DURATION; - } - final float fraction = Math.max(Math.abs(translationX) / displayFrame.width(), - Math.abs(translationY) / displayFrame.height()); - return (long) (DEFAULT_APP_TRANSITION_DURATION + fraction * - (MAX_CLIP_REVEAL_TRANSITION_DURATION - DEFAULT_APP_TRANSITION_DURATION)); - } - - /** - * Prepares the specified animation with a standard duration, interpolator, etc. - */ - Animation prepareThumbnailAnimation(Animation a, int appWidth, int appHeight, int transit) { - // Pick the desired duration. If this is an inter-activity transition, - // it is the standard duration for that. Otherwise we use the longer - // task transition duration. - final int duration; - switch (transit) { - case TRANSIT_OLD_ACTIVITY_OPEN: - case TRANSIT_OLD_ACTIVITY_CLOSE: - duration = mConfigShortAnimTime; - break; - default: - duration = DEFAULT_APP_TRANSITION_DURATION; - break; - } - return prepareThumbnailAnimationWithDuration(a, appWidth, appHeight, duration, - mDecelerateInterpolator); - } - /** * Creates an overlay with a background color and a thumbnail for the cross profile apps * animation. @@ -691,32 +555,6 @@ public class AppTransition implements Dump { mNextAppTransitionScaleUp); } - private Animation createCurvedMotion(float fromX, float toX, float fromY, float toY) { - return new TranslateAnimation(fromX, toX, fromY, toY); - } - - private long getAspectScaleDuration() { - return THUMBNAIL_APP_TRANSITION_DURATION; - } - - private Interpolator getAspectScaleInterpolator() { - return TOUCH_RESPONSE_INTERPOLATOR; - } - - private Animation createAspectScaledThumbnailEnterFreeformAnimationLocked(Rect frame, - @Nullable Rect surfaceInsets, WindowContainer container) { - getNextAppTransitionStartRect(container, mTmpRect); - return createAspectScaledThumbnailFreeformAnimationLocked(mTmpRect, frame, surfaceInsets, - true); - } - - private Animation createAspectScaledThumbnailExitFreeformAnimationLocked(Rect frame, - @Nullable Rect surfaceInsets, WindowContainer container) { - getNextAppTransitionStartRect(container, mTmpRect); - return createAspectScaledThumbnailFreeformAnimationLocked(frame, mTmpRect, surfaceInsets, - false); - } - private AnimationSet createAspectScaledThumbnailFreeformAnimationLocked(Rect sourceFrame, Rect destFrame, @Nullable Rect surfaceInsets, boolean enter) { final float sourceWidth = sourceFrame.width(); @@ -751,48 +589,6 @@ public class AppTransition implements Dump { return set; } - /** - * This animation runs for the thumbnail that gets cross faded with the enter/exit activity - * when a thumbnail is specified with the pending animation override. - */ - Animation createThumbnailScaleAnimationLocked(int appWidth, int appHeight, int transit, - HardwareBuffer thumbnailHeader) { - Animation a; - getDefaultNextAppTransitionStartRect(mTmpRect); - final int thumbWidthI = thumbnailHeader.getWidth(); - final float thumbWidth = thumbWidthI > 0 ? thumbWidthI : 1; - final int thumbHeightI = thumbnailHeader.getHeight(); - final float thumbHeight = thumbHeightI > 0 ? thumbHeightI : 1; - - if (mNextAppTransitionScaleUp) { - // Animation for the thumbnail zooming from its initial size to the full screen - float scaleW = appWidth / thumbWidth; - float scaleH = appHeight / thumbHeight; - Animation scale = new ScaleAnimation(1, scaleW, 1, scaleH, - TransitionAnimation.computePivot(mTmpRect.left, 1 / scaleW), - TransitionAnimation.computePivot(mTmpRect.top, 1 / scaleH)); - scale.setInterpolator(mDecelerateInterpolator); - - Animation alpha = new AlphaAnimation(1, 0); - alpha.setInterpolator(mThumbnailFadeOutInterpolator); - - // This AnimationSet uses the Interpolators assigned above. - AnimationSet set = new AnimationSet(false); - set.addAnimation(scale); - set.addAnimation(alpha); - a = set; - } else { - // Animation for the thumbnail zooming down from the full screen to its final size - float scaleW = appWidth / thumbWidth; - float scaleH = appHeight / thumbHeight; - a = new ScaleAnimation(scaleW, 1, scaleH, 1, - TransitionAnimation.computePivot(mTmpRect.left, 1 / scaleW), - TransitionAnimation.computePivot(mTmpRect.top, 1 / scaleH)); - } - - return prepareThumbnailAnimation(a, appWidth, appHeight, transit); - } - /** * @return true if and only if the first frame of the transition can be skipped, i.e. the first * frame of the transition doesn't change the visuals on screen, so we can start @@ -1542,10 +1338,6 @@ public class AppTransition implements Dump { } } - public void setCurrentUser(int newUserId) { - mCurrentUserId = newUserId; - } - boolean prepareAppTransition(@TransitionType int transit, @TransitionFlags int flags) { if (mService.mAtmService.getTransitionController().getTransitionPlayer() != null) { return false; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 5ef7428b36061..66396cdd4f9f8 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -3459,8 +3459,6 @@ public class WindowManagerService extends IWindowManager.Stub // Notify whether the root docked task exists for the current user final DisplayContent displayContent = getDefaultDisplayContentLocked(); - mRoot.forAllDisplays(dc -> dc.mAppTransition.setCurrentUser(newUserId)); - // If the display is already prepared, update the density. // Otherwise, we'll update it when it's prepared. if (mDisplayReady) {