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

Commit 4686eea0 authored by Rachit Jain's avatar Rachit Jain Committed by Android (Google) Code Review
Browse files

Merge "Revert^2 "Revert "Add userId information in Transition#AnimationOptions""" into main

parents ac4db44e b3b3cc9c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1141,6 +1141,7 @@ public final class TransitionInfo implements Parcelable {
        // Customize activity transition animation
        private CustomActivityTransition mCustomActivityOpenTransition;
        private CustomActivityTransition mCustomActivityCloseTransition;
        private int mUserId;

        private AnimationOptions(int type) {
            mType = type;
@@ -1159,6 +1160,7 @@ public final class TransitionInfo implements Parcelable {
            mAnimations = in.readInt();
            mCustomActivityOpenTransition = in.readTypedObject(CustomActivityTransition.CREATOR);
            mCustomActivityCloseTransition = in.readTypedObject(CustomActivityTransition.CREATOR);
            mUserId = in.readInt();
        }

        /** Make basic customized animation for a package */
@@ -1283,6 +1285,14 @@ public final class TransitionInfo implements Parcelable {
            return options;
        }

        public void setUserId(int userId) {
            mUserId = userId;
        }

        public int getUserId() {
            return mUserId;
        }

        public int getType() {
            return mType;
        }
@@ -1349,6 +1359,7 @@ public final class TransitionInfo implements Parcelable {
            dest.writeInt(mAnimations);
            dest.writeTypedObject(mCustomActivityOpenTransition, flags);
            dest.writeTypedObject(mCustomActivityCloseTransition, flags);
            dest.writeInt(mUserId);
        }

        @NonNull
@@ -1406,6 +1417,7 @@ public final class TransitionInfo implements Parcelable {
            if (mExitResId != DEFAULT_ANIMATION_RESOURCES_ID) {
                sb.append(" exitResId=").append(mExitResId);
            }
            sb.append(" mUserId=").append(mUserId);
            sb.append('}');
            return sb.toString();
        }
+62 −17
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ import android.hardware.HardwareBuffer;
import android.media.Image;
import android.media.ImageReader;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.util.Slog;
import android.view.InflateException;
import android.view.SurfaceControl;
@@ -187,23 +187,44 @@ public class TransitionAnimation {
        return createHiddenByKeyguardExit(mContext, mInterpolator, onWallpaper, toShade, subtle);
    }

    /** Load keyguard unocclude animation for user. */
    @Nullable
    public Animation loadKeyguardUnoccludeAnimation(int userId) {
        return loadDefaultAnimationRes(com.android.internal.R.anim.wallpaper_open_exit, userId);
    }

    /** Same as {@code loadKeyguardUnoccludeAnimation} for current user. */
    @Nullable
    public Animation loadKeyguardUnoccludeAnimation() {
        return loadDefaultAnimationRes(com.android.internal.R.anim.wallpaper_open_exit);
        return loadKeyguardUnoccludeAnimation(UserHandle.USER_CURRENT);
    }

    /** Load voice activity open animation for user. */
    @Nullable
    public Animation loadVoiceActivityOpenAnimation(boolean enter) {
    public Animation loadVoiceActivityOpenAnimation(boolean enter, int userId) {
        return loadDefaultAnimationRes(enter
                ? com.android.internal.R.anim.voice_activity_open_enter
                : com.android.internal.R.anim.voice_activity_open_exit);
                : com.android.internal.R.anim.voice_activity_open_exit, userId);
    }

    /** Same as {@code loadVoiceActivityOpenAnimation} for current user. */
    @Nullable
    public Animation loadVoiceActivityExitAnimation(boolean enter) {
    public Animation loadVoiceActivityOpenAnimation(boolean enter) {
        return loadVoiceActivityOpenAnimation(enter, UserHandle.USER_CURRENT);
    }

    /** Load voice activity exit animation for user. */
    @Nullable
    public Animation loadVoiceActivityExitAnimation(boolean enter, int userId) {
        return loadDefaultAnimationRes(enter
                ? com.android.internal.R.anim.voice_activity_close_enter
                : com.android.internal.R.anim.voice_activity_close_exit);
                : com.android.internal.R.anim.voice_activity_close_exit, userId);
    }

    /** Same as {@code loadVoiceActivityExitAnimation} for current user. */
    @Nullable
    public Animation loadVoiceActivityExitAnimation(boolean enter) {
        return loadVoiceActivityExitAnimation(enter, UserHandle.USER_CURRENT);
    }

    @Nullable
@@ -211,10 +232,17 @@ public class TransitionAnimation {
        return loadAnimationRes(packageName, resId);
    }

    /** Load cross profile app enter animation for user. */
    @Nullable
    public Animation loadCrossProfileAppEnterAnimation() {
    public Animation loadCrossProfileAppEnterAnimation(int userId) {
        return loadAnimationRes(DEFAULT_PACKAGE,
                com.android.internal.R.anim.task_open_enter_cross_profile_apps);
                com.android.internal.R.anim.task_open_enter_cross_profile_apps, userId);
    }

    /** Same as {@code loadCrossProfileAppEnterAnimation} for current user. */
    @Nullable
    public Animation loadCrossProfileAppEnterAnimation() {
        return loadCrossProfileAppEnterAnimation(UserHandle.USER_CURRENT);
    }

    @Nullable
@@ -230,11 +258,11 @@ public class TransitionAnimation {
                appRect.height(), 0, null);
    }

    /** Load animation by resource Id from specific package. */
    /** Load animation by resource Id from specific package for user. */
    @Nullable
    public Animation loadAnimationRes(String packageName, int resId) {
    public Animation loadAnimationRes(String packageName, int resId, int userId) {
        if (ResourceId.isValid(resId)) {
            AttributeCache.Entry ent = getCachedAnimations(packageName, resId);
            AttributeCache.Entry ent = getCachedAnimations(packageName, resId, userId);
            if (ent != null) {
                return loadAnimationSafely(ent.context, resId, mTag);
            }
@@ -242,10 +270,22 @@ public class TransitionAnimation {
        return null;
    }

    /** Load animation by resource Id from android package. */
    /** Same as {@code loadAnimationRes} for current user. */
    @Nullable
    public Animation loadAnimationRes(String packageName, int resId) {
        return loadAnimationRes(packageName, resId, UserHandle.USER_CURRENT);
    }

    /** Load animation by resource Id from android package for user. */
    @Nullable
    public Animation loadDefaultAnimationRes(int resId, int userId) {
        return loadAnimationRes(DEFAULT_PACKAGE, resId, userId);
    }

    /** Same as {@code loadDefaultAnimationRes} for current user. */
    @Nullable
    public Animation loadDefaultAnimationRes(int resId) {
        return loadAnimationRes(DEFAULT_PACKAGE, resId);
        return loadAnimationRes(DEFAULT_PACKAGE, resId, UserHandle.USER_CURRENT);
    }

    /** Load animation by attribute Id from specific LayoutParams */
@@ -378,10 +418,10 @@ public class TransitionAnimation {
    }

    @Nullable
    private AttributeCache.Entry getCachedAnimations(String packageName, int resId) {
    private AttributeCache.Entry getCachedAnimations(String packageName, int resId, int userId) {
        if (mDebug) {
            Slog.v(mTag, "Loading animations: package="
                    + packageName + " resId=0x" + Integer.toHexString(resId));
            Slog.v(mTag, "Loading animations: package=" + packageName + " resId=0x"
                    + Integer.toHexString(resId) + " for user=" + userId);
        }
        if (packageName != null) {
            if ((resId & 0xFF000000) == 0x01000000) {
@@ -392,11 +432,16 @@ public class TransitionAnimation {
                        + packageName);
            }
            return AttributeCache.instance().get(packageName, resId,
                    com.android.internal.R.styleable.WindowAnimation);
                    com.android.internal.R.styleable.WindowAnimation, userId);
        }
        return null;
    }

    @Nullable
    private AttributeCache.Entry getCachedAnimations(String packageName, int resId) {
        return getCachedAnimations(packageName, resId, UserHandle.USER_CURRENT);
    }

    /** Returns window animation style ID from {@link LayoutParams} or from system in some cases */
    public int getAnimationStyleResId(@NonNull LayoutParams lp) {
        int resId = lp.windowAnimations;
+10 −10
Original line number Diff line number Diff line
@@ -18,8 +18,8 @@ package com.android.wm.shell.transition;

import static android.app.ActivityOptions.ANIM_CLIP_REVEAL;
import static android.app.ActivityOptions.ANIM_CUSTOM;
import static android.app.ActivityOptions.ANIM_NONE;
import static android.app.ActivityOptions.ANIM_FROM_STYLE;
import static android.app.ActivityOptions.ANIM_NONE;
import static android.app.ActivityOptions.ANIM_OPEN_CROSS_PROFILE_APPS;
import static android.app.ActivityOptions.ANIM_SCALE_UP;
import static android.app.ActivityOptions.ANIM_SCENE_TRANSITION;
@@ -767,12 +767,12 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
            a = mTransitionAnimation.loadKeyguardExitAnimation(flags,
                    (changeFlags & FLAG_SHOW_WALLPAPER) != 0);
        } else if (type == TRANSIT_KEYGUARD_UNOCCLUDE) {
            a = mTransitionAnimation.loadKeyguardUnoccludeAnimation();
            a = mTransitionAnimation.loadKeyguardUnoccludeAnimation(options.getUserId());
        } else if ((changeFlags & FLAG_IS_VOICE_INTERACTION) != 0) {
            if (isOpeningType) {
                a = mTransitionAnimation.loadVoiceActivityOpenAnimation(enter);
                a = mTransitionAnimation.loadVoiceActivityOpenAnimation(enter, options.getUserId());
            } else {
                a = mTransitionAnimation.loadVoiceActivityExitAnimation(enter);
                a = mTransitionAnimation.loadVoiceActivityExitAnimation(enter, options.getUserId());
            }
        } else if (changeMode == TRANSIT_CHANGE) {
            // In the absence of a specific adapter, we just want to keep everything stationary.
@@ -783,9 +783,9 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
        } else if (overrideType == ANIM_CUSTOM
                && (!isTask || options.getOverrideTaskTransition())) {
            a = mTransitionAnimation.loadAnimationRes(options.getPackageName(), enter
                    ? options.getEnterResId() : options.getExitResId());
                    ? options.getEnterResId() : options.getExitResId(), options.getUserId());
        } else if (overrideType == ANIM_OPEN_CROSS_PROFILE_APPS && enter) {
            a = mTransitionAnimation.loadCrossProfileAppEnterAnimation();
            a = mTransitionAnimation.loadCrossProfileAppEnterAnimation(options.getUserId());
        } else if (overrideType == ANIM_CLIP_REVEAL) {
            a = mTransitionAnimation.createClipRevealAnimationLocked(type, wallpaperTransit, enter,
                    endBounds, endBounds, options.getTransitionBounds());
+7 −5
Original line number Diff line number Diff line
@@ -864,8 +864,9 @@ class ActivityClientController extends IActivityClientController.Stub {
                if (transition != null) {
                    if (changed) {
                        // Always set as scene transition because it expects to be a jump-cut.
                        transition.setOverrideAnimation(TransitionInfo.AnimationOptions
                                .makeSceneTransitionAnimOptions(), null, null);
                        transition.setOverrideAnimation(
                                TransitionInfo.AnimationOptions.makeSceneTransitionAnimOptions(), r,
                                null, null);
                        r.mTransitionController.requestStartTransition(transition,
                                null /*startTask */, null /* remoteTransition */,
                                null /* displayChange */);
@@ -910,8 +911,9 @@ class ActivityClientController extends IActivityClientController.Stub {
                                && under.returningOptions.getAnimationType()
                                        == ANIM_SCENE_TRANSITION) {
                            // Pass along the scene-transition animation-type
                            transition.setOverrideAnimation(TransitionInfo.AnimationOptions
                                    .makeSceneTransitionAnimOptions(), null, null);
                            transition.setOverrideAnimation(TransitionInfo
                                            .AnimationOptions.makeSceneTransitionAnimOptions(), r,
                                    null, null);
                        }
                    } else {
                        transition.abort();
@@ -1508,7 +1510,7 @@ class ActivityClientController extends IActivityClientController.Stub {
                        r.mOverrideTaskTransition);
                r.mTransitionController.setOverrideAnimation(
                        TransitionInfo.AnimationOptions.makeCustomAnimOptions(packageName,
                                enterAnim, exitAnim, backgroundColor, r.mOverrideTaskTransition),
                                enterAnim, exitAnim, backgroundColor, r.mOverrideTaskTransition), r,
                        null /* startCallback */, null /* finishCallback */);
            }
        }
+5 −2
Original line number Diff line number Diff line
@@ -353,6 +353,7 @@ import android.window.SplashScreen;
import android.window.SplashScreenView;
import android.window.SplashScreenView.SplashScreenViewParcelable;
import android.window.TaskSnapshot;
import android.window.TransitionInfo;
import android.window.TransitionInfo.AnimationOptions;
import android.window.WindowContainerToken;
import android.window.WindowOnBackInvokedDispatcher;
@@ -5034,7 +5035,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                // controller but don't clear the animation information from the options since they
                // need to be sent to the animating activity.
                mTransitionController.setOverrideAnimation(
                        AnimationOptions.makeSceneTransitionAnimOptions(), null, null);
                        TransitionInfo.AnimationOptions.makeSceneTransitionAnimOptions(), this,
                        null, null);
                return;
            }
            applyOptionsAnimation(mPendingOptions, intent);
@@ -5157,7 +5159,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        }

        if (options != null) {
            mTransitionController.setOverrideAnimation(options, startCallback, finishCallback);
            mTransitionController.setOverrideAnimation(options, this, startCallback,
                    finishCallback);
        }
    }

Loading