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

Commit 947b2825 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Backport showBackground animation API support

Support was only added to shell, adding support in the the legacy transition system

Test: atest CtsWindowManagerDeviceTestCases:AnimationBackgroundTests

Bug: 218686362
Change-Id: I91cd4d22b7058374a7cc96264797d64597f43e84
parent 4ff2a4e6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1088,7 +1088,7 @@ class ActivityClientController extends IActivityClientController.Stub {
            final ActivityRecord r = ActivityRecord.isInRootTaskLocked(token);
            if (r != null && r.isState(RESUMED, PAUSING)) {
                r.mDisplayContent.mAppTransition.overridePendingAppTransition(
                        packageName, enterAnim, exitAnim, null, null,
                        packageName, enterAnim, exitAnim, backgroundColor, null, null,
                        r.mOverrideTaskTransition);
                r.mTransitionController.setOverrideAnimation(
                        TransitionInfo.AnimationOptions.makeCustomAnimOptions(packageName,
+1 −0
Original line number Diff line number Diff line
@@ -4485,6 +4485,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                        pendingOptions.getPackageName(),
                        pendingOptions.getCustomEnterResId(),
                        pendingOptions.getCustomExitResId(),
                        pendingOptions.getCustomBackgroundColor(),
                        pendingOptions.getAnimationStartedListener(),
                        pendingOptions.getAnimationFinishedListener(),
                        pendingOptions.getOverrideTaskTransition());
+16 −0
Original line number Diff line number Diff line
@@ -41,6 +41,22 @@ interface AnimationAdapter {
     */
    boolean getShowWallpaper();

    /**
     * @return Whether we should show a background behind the animating windows.
     * @see Animation#getShowBackground()
     */
    default boolean getShowBackground() {
        return false;
    }

    /**
     * @return The background color to use during an animation if getShowBackground returns true.
     * @see Animation#getBackgroundColor()
     */
    default int getBackgroundColor() {
        return 0;
    }

    /**
     * Requests to start the animation.
     *
+11 −2
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ import static com.android.server.wm.WindowManagerInternal.KeyguardExitAnimationS
import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_AFTER_ANIM;
import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_NONE;

import android.annotation.ColorInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
@@ -198,6 +199,7 @@ public class AppTransition implements Dump {
    private IRemoteCallback mAnimationFinishedCallback;
    private int mNextAppTransitionEnter;
    private int mNextAppTransitionExit;
    private @ColorInt int mNextAppTransitionBackgroundColor;
    private int mNextAppTransitionInPlace;
    private boolean mNextAppTransitionIsSync;

@@ -829,6 +831,7 @@ public class AppTransition implements Dump {
                    break;
            }
            a = animAttr != 0 ? loadAnimationAttr(lp, animAttr, transit) : null;

            ProtoLog.v(WM_DEBUG_APP_TRANSITIONS_ANIM,
                    "applyAnimation: anim=%s animAttr=0x%x transit=%s isEntrance=%b "
                            + "Callers=%s",
@@ -836,6 +839,11 @@ public class AppTransition implements Dump {
                    Debug.getCallers(3));
        }
        setAppTransitionFinishedCallbackIfNeeded(a);

        if (mNextAppTransitionBackgroundColor != 0) {
            a.setBackgroundColor(mNextAppTransitionBackgroundColor);
        }

        return a;
    }

@@ -861,14 +869,15 @@ public class AppTransition implements Dump {
    }

    void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim,
            IRemoteCallback startedCallback, IRemoteCallback endedCallback,
            boolean overrideTaskTransaction) {
            @ColorInt int backgroundColor, IRemoteCallback startedCallback,
            IRemoteCallback endedCallback, boolean overrideTaskTransaction) {
        if (canOverridePendingAppTransition()) {
            clear();
            mNextAppTransitionOverrideRequested = true;
            mNextAppTransitionPackage = packageName;
            mNextAppTransitionEnter = enterAnim;
            mNextAppTransitionExit = exitAnim;
            mNextAppTransitionBackgroundColor = backgroundColor;
            postAnimationCallback();
            mNextAppTransitionCallback = startedCallback;
            mAnimationFinishedCallback = endedCallback;
+24 −0
Original line number Diff line number Diff line
@@ -50,6 +50,16 @@ class LocalAnimationAdapter implements AnimationAdapter {
        return mSpec.getShowWallpaper();
    }

    @Override
    public boolean getShowBackground() {
        return mSpec.getShowBackground();
    }

    @Override
    public int getBackgroundColor() {
        return mSpec.getBackgroundColor();
    }

    @Override
    public void startAnimation(SurfaceControl animationLeash, Transaction t,
            @AnimationType int type, @NonNull OnAnimationFinishedCallback finishCallback) {
@@ -96,6 +106,20 @@ class LocalAnimationAdapter implements AnimationAdapter {
            return false;
        }

        /**
         * @see AnimationAdapter#getShowBackground
         */
        default boolean getShowBackground() {
            return false;
        }

        /**
         * @see AnimationAdapter#getBackgroundColor
         */
        default int getBackgroundColor() {
            return 0;
        }

        /**
         * @see AnimationAdapter#getStatusBarTransitionsStartTime
         */
Loading