Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0076805f authored by Winson Chung's avatar Winson Chung
Browse files

4/ Remove ANIMATION_TYPE_RECENTS

- This animation type was only used for the legacy recents transition
  and not the shell transit path

Flag: EXEMPT removing code
Bug: 359608026
Test: atest AppTransitionTests
Change-Id: Ib29e2aa75b891dfeb391fe44874fc1d503b99287
parent e4041f0e
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -236,7 +236,6 @@ import static com.android.server.wm.StartingData.AFTER_TRANSACTION_COPY_TO_CLIEN
import static com.android.server.wm.StartingData.AFTER_TRANSACTION_REMOVE_DIRECTLY;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_PREDICT_BACK;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_VISIBLE;
import static com.android.server.wm.TaskPersister.DEBUG;
@@ -5573,11 +5572,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            return false;
        }
        if (!mDisplayContent.mAppTransition.isTransitionSet()) {
            // Defer committing visibility for non-home app which is animating by recents.
            if (isActivityTypeHome() || !isAnimating(PARENTS, ANIMATION_TYPE_RECENTS)) {
            return false;
        }
        }
        if (mWaitForEnteringPinnedMode && mVisible == visible) {
            // If the visibility is not changed during enter PIP, we don't want to include it in
            // app transition to affect the animation theme, because the Pip organizer will
@@ -5730,8 +5726,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
    private void postApplyAnimation(boolean visible, boolean fromTransition) {
        final boolean usingShellTransitions = mTransitionController.isShellTransitionsEnabled();
        final boolean delayed = !usingShellTransitions && isAnimating(PARENTS | CHILDREN,
                ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION
                        | ANIMATION_TYPE_RECENTS);
                ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION);
        if (!delayed && !usingShellTransitions) {
            // We aren't delayed anything, but exiting windows rely on the animation finished
            // callback being called in case the ActivityRecord was pretending to be delayed,
@@ -5753,7 +5748,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        // animation and aren't in RESUMED state. Otherwise, we'll update client visibility in
        // onAnimationFinished or activityStopped.
        if (visible || (mState != RESUMED && (usingShellTransitions || !isAnimating(
                PARENTS, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS)))) {
                PARENTS, ANIMATION_TYPE_APP_TRANSITION)))) {
            setClientVisible(visible);
        }

@@ -7731,7 +7726,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                // Ensure that the activity content is hidden when the decor surface is boosted to
                // prevent UI redressing attack.
                && !isDecorSurfaceBoosted)
                || isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS
                || isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION
                        | ANIMATION_TYPE_PREDICT_BACK);

        if (mSurfaceControl != null) {
+0 −36
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ import static com.android.server.wm.AppTransition.isNormalTransit;
import static com.android.server.wm.NonAppWindowAnimationAdapter.shouldAttachNavBarToApp;
import static com.android.server.wm.NonAppWindowAnimationAdapter.shouldStartNonAppWindowAnimationsForKeyguardExit;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.WallpaperAnimationAdapter.shouldStartWallpaperAnimation;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -173,41 +172,6 @@ public class AppTransitionController {
                || !transitionGoodToGoForTaskFragments()) {
            return;
        }
        final boolean isRecentsInOpening = mDisplayContent.mOpeningApps.stream().anyMatch(
                ConfigurationContainer::isActivityTypeRecents);
        // In order to avoid visual clutter caused by a conflict between app transition
        // animation and recents animation, app transition is delayed until recents finishes.
        // One exceptional case. When 3P launcher is used and a user taps a task screenshot in
        // task switcher (isRecentsInOpening=true), app transition must start even though
        // recents is running. Otherwise app transition is blocked until timeout (b/232984498).
        // When 1P launcher is used, this animation is controlled by the launcher outside of
        // the app transition, so delaying app transition doesn't cause visible delay. After
        // recents finishes, app transition is handled just to commit visibility on apps.
        if (!isRecentsInOpening) {
            final ArraySet<WindowContainer> participants = new ArraySet<>();
            participants.addAll(mDisplayContent.mOpeningApps);
            participants.addAll(mDisplayContent.mChangingContainers);
            boolean deferForRecents = false;
            for (int i = 0; i < participants.size(); i++) {
                WindowContainer wc = participants.valueAt(i);
                final ActivityRecord activity = getAppFromContainer(wc);
                if (activity == null) {
                    continue;
                }
                // Don't defer recents animation if one of activity isn't running for it, that one
                // might be started from quickstep.
                if (!activity.isAnimating(PARENTS, ANIMATION_TYPE_RECENTS)) {
                    deferForRecents = false;
                    break;
                }
                deferForRecents = true;
            }
            if (deferForRecents) {
                ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
                        "Delaying app transition for recents animation to finish");
                return;
            }
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "AppTransitionReady");

+1 −3
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ import android.view.SurfaceControl;
import android.view.SurfaceControl.Transaction;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.common.LogLevel;
import com.android.internal.protolog.ProtoLog;
import com.android.internal.protolog.common.LogLevel;

import java.io.PrintWriter;
import java.io.StringWriter;
@@ -585,7 +585,6 @@ public class SurfaceAnimator {
            ANIMATION_TYPE_APP_TRANSITION,
            ANIMATION_TYPE_SCREEN_ROTATION,
            ANIMATION_TYPE_DIMMER,
            ANIMATION_TYPE_RECENTS,
            ANIMATION_TYPE_WINDOW_ANIMATION,
            ANIMATION_TYPE_INSETS_CONTROL,
            ANIMATION_TYPE_TOKEN_TRANSFORM,
@@ -604,7 +603,6 @@ public class SurfaceAnimator {
            case ANIMATION_TYPE_APP_TRANSITION: return "app_transition";
            case ANIMATION_TYPE_SCREEN_ROTATION: return "screen_rotation";
            case ANIMATION_TYPE_DIMMER: return "dimmer";
            case ANIMATION_TYPE_RECENTS: return "recents_animation";
            case ANIMATION_TYPE_WINDOW_ANIMATION: return "window_animation";
            case ANIMATION_TYPE_INSETS_CONTROL: return "insets_animation";
            case ANIMATION_TYPE_TOKEN_TRANSFORM: return "token_transform";
+1 −3
Original line number Diff line number Diff line
@@ -94,7 +94,6 @@ import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_PINNABLE;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.TaskProto.AFFINITY;
import static com.android.server.wm.TaskProto.BOUNDS;
import static com.android.server.wm.TaskProto.CREATED_BY_ORGANIZER;
@@ -2959,8 +2958,7 @@ class Task extends TaskFragment {

    /** Checking if self or its child tasks are animated by recents animation. */
    boolean isAnimatingByRecents() {
        return isAnimating(CHILDREN, ANIMATION_TYPE_RECENTS)
                || mTransitionController.isTransientHide(this);
        return mTransitionController.isTransientHide(this);
    }

    WindowState getTopVisibleAppMainWindow() {
+2 −3
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm;
import static com.android.internal.protolog.ProtoLogGroup.WM_SHOW_TRANSACTIONS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_SCREEN_ROTATION;
import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
@@ -218,8 +217,8 @@ public class WindowAnimator {
    private void updateRunningExpensiveAnimationsLegacy() {
        final boolean runningExpensiveAnimations =
                mService.mRoot.isAnimating(TRANSITION | CHILDREN /* flags */,
                        ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_SCREEN_ROTATION
                                | ANIMATION_TYPE_RECENTS /* typesToCheck */);
                        ANIMATION_TYPE_APP_TRANSITION
                                | ANIMATION_TYPE_SCREEN_ROTATION /* typesToCheck */);
        if (runningExpensiveAnimations && !mRunningExpensiveAnimations) {
            mService.mSnapshotController.setPause(true);
            mTransaction.setEarlyWakeupStart();
Loading