diff options
| author | 2022-05-05 09:06:25 +0000 | |
|---|---|---|
| committer | 2022-05-05 09:06:25 +0000 | |
| commit | 4cb4e806396f7ec07db64e194634e6729fca5b58 (patch) | |
| tree | 2c02c20eb48489d557de1e14de33ed8ab01055f3 | |
| parent | d8578446c4065cc9271f98a44494a3d762a3fbb9 (diff) | |
| parent | 9631eeca320d9655763a43370f32b381d108b97c (diff) | |
Merge "Disable overriding task animation through windowAnimationStyle attribute." into tm-qpr-dev am: 9631eeca32
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17884326
Change-Id: Ic4b8d39a03ce82dc2788436dd06ab28ceebb1fcf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/com/android/internal/policy/TransitionAnimation.java | 33 | ||||
| -rw-r--r-- | data/etc/services.core.protolog.json | 18 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/AppTransition.java | 20 |
3 files changed, 55 insertions, 16 deletions
diff --git a/core/java/com/android/internal/policy/TransitionAnimation.java b/core/java/com/android/internal/policy/TransitionAnimation.java index fd8534d45b2b..7fd3a3866a3a 100644 --- a/core/java/com/android/internal/policy/TransitionAnimation.java +++ b/core/java/com/android/internal/policy/TransitionAnimation.java @@ -25,6 +25,7 @@ import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_OPEN; import static android.view.WindowManager.TRANSIT_OLD_NONE; import static android.view.WindowManager.TRANSIT_OLD_TRANSLUCENT_ACTIVITY_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_TRANSLUCENT_ACTIVITY_OPEN; +import static android.view.WindowManager.TRANSIT_OLD_UNSET; import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_OPEN; import static android.view.WindowManager.TRANSIT_OPEN; @@ -261,11 +262,17 @@ public class TransitionAnimation { } return null; } - - /** Load animation by attribute Id from a specific AnimationStyle resource. */ + /** + * Load animation by attribute Id from a specific AnimationStyle resource. + * + * @param translucent {@code true} if we're sure that the animation is applied on a translucent + * window container, {@code false} otherwise. + * @param transit {@link TransitionOldType} for the app transition of this animation, or + * {@link TransitionOldType#TRANSIT_OLD_UNSET} if app transition type is unknown. + */ @Nullable - public Animation loadAnimationAttr(String packageName, int animStyleResId, int animAttr, - boolean translucent) { + private Animation loadAnimationAttr(String packageName, int animStyleResId, int animAttr, + boolean translucent, @TransitionOldType int transit) { if (animStyleResId == 0) { return null; } @@ -281,6 +288,8 @@ public class TransitionAnimation { } if (translucent) { resId = updateToTranslucentAnimIfNeeded(resId); + } else if (transit != TRANSIT_OLD_UNSET) { + resId = updateToTranslucentAnimIfNeeded(resId, transit); } if (ResourceId.isValid(resId)) { return loadAnimationSafely(context, resId, mTag); @@ -288,6 +297,15 @@ public class TransitionAnimation { return null; } + + /** Load animation by attribute Id from a specific AnimationStyle resource. */ + @Nullable + public Animation loadAnimationAttr(String packageName, int animStyleResId, int animAttr, + boolean translucent) { + return loadAnimationAttr(packageName, animStyleResId, animAttr, translucent, + TRANSIT_OLD_UNSET); + } + /** Load animation by attribute Id from android package. */ @Nullable public Animation loadDefaultAnimationAttr(int animAttr, boolean translucent) { @@ -295,6 +313,13 @@ public class TransitionAnimation { translucent); } + /** Load animation by attribute Id from android package. */ + @Nullable + public Animation loadDefaultAnimationAttr(int animAttr, @TransitionOldType int transit) { + return loadAnimationAttr(DEFAULT_PACKAGE, mDefaultWindowAnimationStyleResId, animAttr, + false /* translucent */, transit); + } + @Nullable private AttributeCache.Entry getCachedAnimations(LayoutParams lp) { if (mDebug) { diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index 07a342965411..9a9ace617d48 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -2065,6 +2065,12 @@ "group": "WM_DEBUG_IME", "at": "com\/android\/server\/wm\/DisplayContent.java" }, + "-57572004": { + "message": "applyAnimation: anim=%s animAttr=0x%x transit=%s isEntrance=%b canCustomizeAppTransition=%b Callers=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_APP_TRANSITIONS_ANIM", + "at": "com\/android\/server\/wm\/AppTransition.java" + }, "-55185509": { "message": "setFocusedTask: taskId=%d touchedActivity=%s", "level": "DEBUG", @@ -4171,6 +4177,12 @@ "group": "WM_DEBUG_ANIM", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, + "2079410261": { + "message": "applyAnimation: override requested, but it is prohibited by policy.", + "level": "ERROR", + "group": "WM_DEBUG_APP_TRANSITIONS_ANIM", + "at": "com\/android\/server\/wm\/AppTransition.java" + }, "2083556954": { "message": "Set mOrientationChanging of %s", "level": "VERBOSE", @@ -4224,12 +4236,6 @@ "level": "VERBOSE", "group": "WM_DEBUG_ORIENTATION", "at": "com\/android\/server\/wm\/DisplayRotation.java" - }, - "2137411379": { - "message": "applyAnimation: anim=%s animAttr=0x%x transit=%s isEntrance=%b Callers=%s", - "level": "VERBOSE", - "group": "WM_DEBUG_APP_TRANSITIONS_ANIM", - "at": "com\/android\/server\/wm\/AppTransition.java" } }, "groups": { diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 1e8e8e04f21d..caaaf47e6d11 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -650,9 +650,15 @@ public class AppTransition implements Dump { @Nullable Rect surfaceInsets, @Nullable Rect stableInsets, boolean isVoiceInteraction, boolean freeform, WindowContainer container) { - if (mNextAppTransitionOverrideRequested - && (container.canCustomizeAppTransition() || mOverrideTaskTransition)) { - mNextAppTransitionType = NEXT_TRANSIT_TYPE_CUSTOM; + final boolean canCustomizeAppTransition = container.canCustomizeAppTransition(); + + if (mNextAppTransitionOverrideRequested) { + if (canCustomizeAppTransition || mOverrideTaskTransition) { + mNextAppTransitionType = NEXT_TRANSIT_TYPE_CUSTOM; + } else { + ProtoLog.e(WM_DEBUG_APP_TRANSITIONS_ANIM, "applyAnimation: " + + " override requested, but it is prohibited by policy."); + } } Animation a; @@ -851,13 +857,15 @@ public class AppTransition implements Dump { : WindowAnimation_dreamActivityCloseExitAnimation; break; } - a = animAttr != 0 ? loadAnimationAttr(lp, animAttr, transit) : null; + a = animAttr == 0 ? null : (canCustomizeAppTransition + ? loadAnimationAttr(lp, animAttr, transit) + : mTransitionAnimation.loadDefaultAnimationAttr(animAttr, transit)); ProtoLog.v(WM_DEBUG_APP_TRANSITIONS_ANIM, "applyAnimation: anim=%s animAttr=0x%x transit=%s isEntrance=%b " - + "Callers=%s", + + " canCustomizeAppTransition=%b Callers=%s", a, animAttr, appTransitionOldToString(transit), enter, - Debug.getCallers(3)); + canCustomizeAppTransition, Debug.getCallers(3)); } setAppTransitionFinishedCallbackIfNeeded(a); |