summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Charles Chen <charlesccchen@google.com> 2025-02-11 17:18:27 +0800
committer Charles Chen <charlesccchen@google.com> 2025-02-20 13:59:17 +0800
commit6b2953431f644bb3114e843926b9c97652c84fc7 (patch)
tree98226198b7698db053f3329197c88819c564a632
parent6b3d33e24ae86cb283670f590e4290d3ed71ebc6 (diff)
Clean up move_animation_options_to_change
Bug: 327332488 Test: presubmit Flag: EXEMPT remove flag Change-Id: I2b4d8c93be50bf013e1863f1b95507013973d24e
-rw-r--r--core/java/android/window/TransitionFilter.java6
-rw-r--r--core/java/android/window/TransitionInfo.java38
-rw-r--r--core/java/android/window/flags/windowing_sdk.aconfig10
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java14
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java44
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java16
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java18
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java53
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java34
-rw-r--r--services/core/java/com/android/server/wm/Transition.java70
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TransitionTests.java24
14 files changed, 62 insertions, 276 deletions
diff --git a/core/java/android/window/TransitionFilter.java b/core/java/android/window/TransitionFilter.java
index 61fc6226f822..d8d20119a602 100644
--- a/core/java/android/window/TransitionFilter.java
+++ b/core/java/android/window/TransitionFilter.java
@@ -31,8 +31,6 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.view.WindowManager;
-import com.android.window.flags.Flags;
-
/**
* A parcelable filter that can be used for rerouting transitions to a remote. This is a local
* representation so that the transition system doesn't need to make blocking queries over
@@ -261,9 +259,7 @@ public final class TransitionFilter implements Parcelable {
// only applies to activity/task
&& (change.getTaskInfo() != null
|| change.getActivityComponent() != null)) {
- final TransitionInfo.AnimationOptions opts =
- Flags.moveAnimationOptionsToChange() ? change.getAnimationOptions()
- : info.getAnimationOptions();
+ final TransitionInfo.AnimationOptions opts = change.getAnimationOptions();
if (opts != null) {
boolean canActuallyOverride = change.getTaskInfo() == null
|| opts.getOverrideTaskTransition();
diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java
index 4f34aa36a204..32175f122d61 100644
--- a/core/java/android/window/TransitionInfo.java
+++ b/core/java/android/window/TransitionInfo.java
@@ -57,8 +57,6 @@ import android.view.Surface;
import android.view.SurfaceControl;
import android.view.WindowManager;
-import com.android.window.flags.Flags;
-
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -220,10 +218,6 @@ public final class TransitionInfo implements Parcelable {
private final ArrayList<Change> mChanges = new ArrayList<>();
private final ArrayList<Root> mRoots = new ArrayList<>();
- // TODO(b/327332488): Clean-up usages after the flag is fully enabled.
- @Deprecated
- private AnimationOptions mOptions;
-
/** This is only a BEST-EFFORT id used for log correlation. DO NOT USE for any real work! */
private int mDebugId = -1;
@@ -238,7 +232,6 @@ public final class TransitionInfo implements Parcelable {
mFlags = in.readInt();
in.readTypedList(mChanges, Change.CREATOR);
in.readTypedList(mRoots, Root.CREATOR);
- mOptions = in.readTypedObject(AnimationOptions.CREATOR);
mDebugId = in.readInt();
mTrack = in.readInt();
}
@@ -250,7 +243,6 @@ public final class TransitionInfo implements Parcelable {
dest.writeInt(mFlags);
dest.writeTypedList(mChanges);
dest.writeTypedList(mRoots, flags);
- dest.writeTypedObject(mOptions, flags);
dest.writeInt(mDebugId);
dest.writeInt(mTrack);
}
@@ -286,18 +278,6 @@ public final class TransitionInfo implements Parcelable {
mRoots.add(other);
}
- /**
- * @deprecated Set {@link AnimationOptions} to change. This method is only used if
- * {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
- */
- @Deprecated
- public void setAnimationOptions(@Nullable AnimationOptions options) {
- if (Flags.moveAnimationOptionsToChange()) {
- return;
- }
- mOptions = options;
- }
-
public @TransitionType int getType() {
return mType;
}
@@ -360,16 +340,6 @@ public final class TransitionInfo implements Parcelable {
}
/**
- * @deprecated Use {@link Change#getAnimationOptions()} instead. This method is called only
- * if {@link Flags#FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE} is disabled.
- */
- @Deprecated
- @Nullable
- public AnimationOptions getAnimationOptions() {
- return mOptions;
- }
-
- /**
* @return the list of {@link Change}s in this transition. The list is sorted top-to-bottom
* in Z (meaning index 0 is the top-most container).
*/
@@ -455,9 +425,6 @@ public final class TransitionInfo implements Parcelable {
StringBuilder sb = new StringBuilder();
sb.append("{id=").append(mDebugId).append(" t=").append(transitTypeToString(mType))
.append(" f=0x").append(Integer.toHexString(mFlags)).append(" trk=").append(mTrack);
- if (mOptions != null) {
- sb.append(" opt=").append(mOptions);
- }
sb.append(" r=[");
for (int i = 0; i < mRoots.size(); ++i) {
if (i > 0) {
@@ -656,8 +623,6 @@ public final class TransitionInfo implements Parcelable {
for (int i = 0; i < mRoots.size(); ++i) {
out.mRoots.add(mRoots.get(i).localRemoteCopy());
}
- // Doesn't have any native stuff, so no need for actual copy
- out.mOptions = mOptions;
return out;
}
@@ -860,9 +825,6 @@ public final class TransitionInfo implements Parcelable {
* Sets {@link AnimationOptions} to override animation.
*/
public void setAnimationOptions(@Nullable AnimationOptions options) {
- if (!Flags.moveAnimationOptionsToChange()) {
- return;
- }
mAnimationOptions = options;
}
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index 54d0eeffc9bb..6e45d3dc659f 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -62,16 +62,6 @@ flag {
flag {
namespace: "windowing_sdk"
- name: "move_animation_options_to_change"
- description: "Move AnimationOptions from TransitionInfo to each Change"
- bug: "327332488"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
- namespace: "windowing_sdk"
name: "rear_display_disable_force_desktop_system_decorations"
description: "Block system decorations from being added to a rear display when desktop mode is forced"
bug: "346103150"
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index eb59d6efdeff..7ab9e2e65b76 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -705,8 +705,7 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
}
private static boolean isOverlayTransitionSupported() {
- return Flags.moveAnimationOptionsToChange()
- && Flags.activityEmbeddingOverlayPresentationFlag();
+ return Flags.activityEmbeddingOverlayPresentationFlag();
}
@NonNull
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
index f269b3831aab..78f5154c0ecb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java
@@ -364,7 +364,7 @@ class ActivityEmbeddingAnimationRunner {
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull List<ActivityEmbeddingAnimationAdapter> adapters) {
for (ActivityEmbeddingAnimationAdapter adapter : adapters) {
- final int backgroundColor = getTransitionBackgroundColorIfSet(info, adapter.mChange,
+ final int backgroundColor = getTransitionBackgroundColorIfSet(adapter.mChange,
adapter.mAnimation, 0 /* defaultColor */);
if (backgroundColor != 0) {
// We only need to show one color.
@@ -436,8 +436,8 @@ class ActivityEmbeddingAnimationRunner {
final TransitionInfo.AnimationOptions options = boundsAnimationChange
.getAnimationOptions();
if (options != null) {
- final Animation overrideAnimation = mAnimationSpec.loadCustomAnimationFromOptions(
- options, TRANSIT_CHANGE);
+ final Animation overrideAnimation =
+ mAnimationSpec.loadCustomAnimation(options, TRANSIT_CHANGE);
if (overrideAnimation != null) {
overrideShowBackdrop = overrideAnimation.getShowBackdrop();
}
@@ -447,7 +447,7 @@ class ActivityEmbeddingAnimationRunner {
// There are two animations in the array. The first one is for the start leash
// (snapshot), and the second one is for the end leash (TaskFragment).
final Animation[] animations =
- mAnimationSpec.createChangeBoundsChangeAnimations(info, change, parentBounds);
+ mAnimationSpec.createChangeBoundsChangeAnimations(change, parentBounds);
// Jump cut if either animation has zero for duration.
for (Animation animation : animations) {
if (shouldUseJumpCutForAnimation(animation)) {
@@ -500,12 +500,10 @@ class ActivityEmbeddingAnimationRunner {
// window without bounds change.
animation = ActivityEmbeddingAnimationSpec.createNoopAnimation(change);
} else if (TransitionUtil.isClosingType(change.getMode())) {
- animation =
- mAnimationSpec.createChangeBoundsCloseAnimation(info, change, parentBounds);
+ animation = mAnimationSpec.createChangeBoundsCloseAnimation(change, parentBounds);
shouldShowBackgroundColor = false;
} else {
- animation =
- mAnimationSpec.createChangeBoundsOpenAnimation(info, change, parentBounds);
+ animation = mAnimationSpec.createChangeBoundsOpenAnimation(change, parentBounds);
shouldShowBackgroundColor = false;
}
if (shouldUseJumpCutForAnimation(animation)) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
index 77799e99607b..2b9eda40cdbb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationSpec.java
@@ -42,7 +42,6 @@ import android.view.animation.TranslateAnimation;
import android.window.TransitionInfo;
import com.android.internal.policy.TransitionAnimation;
-import com.android.window.flags.Flags;
import com.android.wm.shell.shared.TransitionUtil;
/** Animation spec for ActivityEmbedding transition. */
@@ -94,9 +93,10 @@ class ActivityEmbeddingAnimationSpec {
/** Animation for window that is opening in a change transition. */
@NonNull
- Animation createChangeBoundsOpenAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ Animation createChangeBoundsOpenAnimation(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return customAnimation;
}
@@ -126,9 +126,10 @@ class ActivityEmbeddingAnimationSpec {
/** Animation for window that is closing in a change transition. */
@NonNull
- Animation createChangeBoundsCloseAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ Animation createChangeBoundsCloseAnimation(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return customAnimation;
}
@@ -162,12 +163,13 @@ class ActivityEmbeddingAnimationSpec {
* the second one is for the end leash.
*/
@NonNull
- Animation[] createChangeBoundsChangeAnimations(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Rect parentBounds) {
+ Animation[] createChangeBoundsChangeAnimations(@NonNull TransitionInfo.Change change,
+ @NonNull Rect parentBounds) {
// TODO(b/293658614): Support more complicated animations that may need more than a noop
// animation as the start leash.
final Animation noopAnimation = createNoopAnimation(change);
- final Animation customAnimation = loadCustomAnimation(info, change, TRANSIT_CHANGE);
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), TRANSIT_CHANGE);
if (customAnimation != null) {
return new Animation[]{noopAnimation, customAnimation};
}
@@ -221,7 +223,8 @@ class ActivityEmbeddingAnimationSpec {
Animation loadOpenAnimation(@NonNull TransitionInfo info,
@NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
- final Animation customAnimation = loadCustomAnimation(info, change, change.getMode());
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), change.getMode());
final Animation animation;
if (customAnimation != null) {
animation = customAnimation;
@@ -248,7 +251,8 @@ class ActivityEmbeddingAnimationSpec {
Animation loadCloseAnimation(@NonNull TransitionInfo info,
@NonNull TransitionInfo.Change change, @NonNull Rect wholeAnimationBounds) {
final boolean isEnter = TransitionUtil.isOpeningType(change.getMode());
- final Animation customAnimation = loadCustomAnimation(info, change, change.getMode());
+ final Animation customAnimation =
+ loadCustomAnimation(change.getAnimationOptions(), change.getMode());
final Animation animation;
if (customAnimation != null) {
animation = customAnimation;
@@ -280,20 +284,8 @@ class ActivityEmbeddingAnimationSpec {
}
@Nullable
- private Animation loadCustomAnimation(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @WindowManager.TransitionType int mode) {
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
- return loadCustomAnimationFromOptions(options, mode);
- }
-
- @Nullable
- Animation loadCustomAnimationFromOptions(@Nullable TransitionInfo.AnimationOptions options,
- @WindowManager.TransitionType int mode) {
+ Animation loadCustomAnimation(@Nullable TransitionInfo.AnimationOptions options,
+ @WindowManager.TransitionType int mode) {
if (options == null || options.getType() != ANIM_CUSTOM) {
return null;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
index 55ed5fa4b56f..3a95333309ac 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
@@ -40,7 +40,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.window.flags.Flags;
import com.android.wm.shell.shared.TransitionUtil;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;
@@ -123,9 +122,6 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
}
private boolean shouldAnimateAnimationOptions(@NonNull TransitionInfo info) {
- if (!Flags.moveAnimationOptionsToChange()) {
- return shouldAnimateAnimationOptions(info.getAnimationOptions());
- }
for (TransitionInfo.Change change : info.getChanges()) {
if (!shouldAnimateAnimationOptions(change.getAnimationOptions())) {
// If any of override animation is not supported, don't animate the transition.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
index 743bd052995e..347dcff86529 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
@@ -40,7 +40,6 @@ import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.activityembedding.ActivityEmbeddingController;
import com.android.wm.shell.common.ComponentUtils;
@@ -439,9 +438,6 @@ public class DefaultMixedHandler implements MixedTransitionHandler,
for (int i = 0; i < info.getRootCount(); ++i) {
out.addRoot(info.getRoot(i));
}
- if (!Flags.moveAnimationOptionsToChange()) {
- out.setAnimationOptions(info.getAnimationOptions());
- }
return out;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
index 01428e60582e..e9c6adec75d7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
@@ -539,7 +539,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
cornerRadius = 0;
}
- backgroundColorForTransition = getTransitionBackgroundColorIfSet(info, change, a,
+ backgroundColorForTransition = getTransitionBackgroundColorIfSet(change, a,
backgroundColorForTransition);
if (!isTask && a.getExtensionEdges() != 0x0) {
@@ -606,12 +606,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
mTransactionPool, mMainExecutor, animRelOffset, cornerRadius,
clipRect);
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
if (options != null) {
attachThumbnail(animations, onAnimFinish, change, options, cornerRadius);
}
@@ -834,12 +829,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
final boolean isOpeningType = TransitionUtil.isOpeningType(type);
final boolean enter = TransitionUtil.isOpeningType(changeMode);
final boolean isTask = change.getTaskInfo() != null;
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
final int overrideType = options != null ? options.getType() : ANIM_NONE;
final int userId = options != null ? options.getUserId() : UserHandle.USER_CURRENT;
final Rect endBounds = TransitionUtil.isClosingType(changeMode)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
index 4feb4753096e..7984bcedc4e5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
@@ -58,7 +58,6 @@ import android.window.TransitionInfo;
import com.android.internal.R;
import com.android.internal.policy.TransitionAnimation;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.shared.TransitionUtil;
@@ -78,12 +77,7 @@ public class TransitionAnimationHelper {
final boolean isFreeform = isTask && change.getTaskInfo().isFreeform();
final boolean isCoveredByOpaqueFullscreenChange =
isCoveredByOpaqueFullscreenChange(info, change);
- final TransitionInfo.AnimationOptions options;
- if (Flags.moveAnimationOptionsToChange()) {
- options = change.getAnimationOptions();
- } else {
- options = info.getAnimationOptions();
- }
+ final TransitionInfo.AnimationOptions options = change.getAnimationOptions();
final int overrideType = options != null ? options.getType() : ANIM_NONE;
int animAttr = 0;
boolean translucent = false;
@@ -279,16 +273,10 @@ public class TransitionAnimationHelper {
* the given transition animation.
*/
@ColorInt
- public static int getTransitionBackgroundColorIfSet(@NonNull TransitionInfo info,
- @NonNull TransitionInfo.Change change, @NonNull Animation a,
- @ColorInt int defaultColor) {
+ public static int getTransitionBackgroundColorIfSet(@NonNull TransitionInfo.Change change,
+ @NonNull Animation a, @ColorInt int defaultColor) {
if (!a.getShowBackdrop()) {
return defaultColor;
- }
- if (!Flags.moveAnimationOptionsToChange() && info.getAnimationOptions() != null
- && info.getAnimationOptions().getBackgroundColor() != 0) {
- // If available use the background color provided through AnimationOptions
- return info.getAnimationOptions().getBackgroundColor();
} else if (a.getBackdropColor() != 0) {
// Otherwise fallback on the background color provided through the animation
// definition.
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
index 94dc774a6737..d4d8d93abf7d 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunnerTests.java
@@ -39,7 +39,6 @@ import android.animation.Animator;
import android.annotation.NonNull;
import android.graphics.Point;
import android.graphics.Rect;
-import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
@@ -77,7 +76,6 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
doNothing().when(mController).onAnimationFinished(any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -103,7 +101,6 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
verify(mController).onAnimationFinished(mTransition);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testChangesBehindStartingWindow() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -118,7 +115,6 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
assertEquals(0, animator.getDuration());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testTransitionTypeDragResize() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_TASK_FRAGMENT_DRAG_RESIZE, 0)
@@ -133,25 +129,6 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
assertEquals(0, animator.getDuration());
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testInvalidCustomAnimation_disableAnimationOptionsPerChange() {
- final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
- .addChange(createChange(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY, TRANSIT_OPEN))
- .build();
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
- 0 /* backgroundColor */, false /* overrideTaskTransition */));
- final Animator animator = mAnimRunner.createAnimator(
- info, mStartTransaction, mFinishTransaction,
- () -> mFinishCallback.onTransitionFinished(null /* wct */),
- new ArrayList<>());
-
- // An invalid custom animation is equivalent to jump-cut.
- assertEquals(0, animator.getDuration());
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testInvalidCustomAnimation_enableAnimationOptionsPerChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -169,36 +146,6 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
assertEquals(0, animator.getDuration());
}
- @DisableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG)
- @Test
- public void testCalculateParentBounds_flagDisabled() {
- final Rect parentBounds = new Rect(0, 0, 2000, 2000);
- final Rect primaryBounds = new Rect();
- final Rect secondaryBounds = new Rect();
- parentBounds.splitVertically(primaryBounds, secondaryBounds);
-
- final TransitionInfo.Change change = createChange(0 /* flags */);
- change.setStartAbsBounds(secondaryBounds);
-
- final TransitionInfo.Change boundsAnimationChange = createChange(0 /* flags */);
- boundsAnimationChange.setStartAbsBounds(primaryBounds);
- boundsAnimationChange.setEndAbsBounds(primaryBounds);
- final Rect actualParentBounds = new Rect();
-
- calculateParentBounds(change, boundsAnimationChange, actualParentBounds);
-
- assertEquals(parentBounds, actualParentBounds);
-
- actualParentBounds.setEmpty();
-
- boundsAnimationChange.setStartAbsBounds(secondaryBounds);
- boundsAnimationChange.setEndAbsBounds(primaryBounds);
-
- calculateParentBounds(boundsAnimationChange, boundsAnimationChange, actualParentBounds);
-
- assertEquals(parentBounds, actualParentBounds);
- }
-
// TODO(b/243518738): Rewrite with TestParameter
@EnableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG)
@Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
index 9f29ef71930a..53a13d0d4ffd 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
@@ -32,8 +32,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.graphics.Rect;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.view.SurfaceControl;
import android.window.TransitionInfo;
@@ -41,7 +39,6 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import com.android.window.flags.Flags;
import com.android.wm.shell.transition.TransitionInfoBuilder;
import org.junit.Before;
@@ -69,13 +66,11 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testInstantiate() {
verify(mShellInit).addInitCallback(any(), any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOnInit() {
mController.onInit();
@@ -83,7 +78,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verify(mTransitions).addHandler(mController);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testSetAnimScaleSetting() {
mController.setAnimScaleSetting(1.0f);
@@ -92,7 +86,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verify(mAnimSpec).setAnimScaleSetting(1.0f);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsNonActivityEmbeddingChange() {
final TransitionInfo.Change nonEmbeddedOpen = createChange(0 /* flags */);
@@ -129,7 +122,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
assertFalse(info2.getChanges().contains(nonEmbeddedClose));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsOnlyFillTaskActivityEmbeddingChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_OPEN, 0)
@@ -146,7 +138,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verifyNoMoreInteractions(mFinishCallback);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsActivityEmbeddingSplitChange() {
// Change that occupies only part of the Task.
@@ -164,7 +155,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verifyNoMoreInteractions(mFinishTransaction);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsChangeEnterActivityEmbeddingSplit() {
// Change that is entering ActivityEmbedding split.
@@ -181,7 +171,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verifyNoMoreInteractions(mFinishTransaction);
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testStartAnimation_containsChangeExitActivityEmbeddingSplit() {
// Change that is exiting ActivityEmbedding split.
@@ -198,27 +187,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verifyNoMoreInteractions(mFinishTransaction);
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testShouldAnimate_containsAnimationOptions_disableAnimOptionsPerChange() {
- final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
- .addChange(createEmbeddedChange(EMBEDDED_RIGHT_BOUNDS, TASK_BOUNDS, TASK_BOUNDS))
- .build();
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeCustomAnimOptions("packageName", 0 /* enterResId */, 0 /* exitResId */,
- 0 /* backgroundColor */, false /* overrideTaskTransition */));
- assertTrue(mController.shouldAnimate(info));
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions
- .makeSceneTransitionAnimOptions());
- assertFalse(mController.shouldAnimate(info));
-
- info.setAnimationOptions(TransitionInfo.AnimationOptions.makeCrossProfileAnimOptions());
- assertFalse(mController.shouldAnimate(info));
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testShouldAnimate_containsAnimationOptions_enableAnimOptionsPerChange() {
final TransitionInfo info = new TransitionInfoBuilder(TRANSIT_CLOSE, 0)
@@ -239,7 +207,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
assertFalse(mController.shouldAnimate(info));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@UiThreadTest
@Test
public void testMergeAnimation() {
@@ -278,7 +245,6 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
verify(mFinishCallback).onTransitionFinished(any());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOnAnimationFinished() {
// Should not call finish when there is no transition.
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 5217a759c6ae..d04135f6c55d 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -2026,23 +2026,18 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
if (mOverrideOptions == null) {
return;
}
-
- if (!Flags.moveAnimationOptionsToChange()) {
- info.setAnimationOptions(mOverrideOptions);
- } else {
- final List<TransitionInfo.Change> changes = info.getChanges();
- for (int i = changes.size() - 1; i >= 0; --i) {
- final WindowContainer<?> container = mTargets.get(i).mContainer;
- if (container.asActivityRecord() != null
- || shouldApplyAnimOptionsToTask(container.asTask())) {
- changes.get(i).setAnimationOptions(mOverrideOptions);
- // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
- changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
- } else if (shouldApplyAnimOptionsToEmbeddedTf(container.asTaskFragment())) {
- // We only override AnimationOptions because backgroundColor should be from
- // TaskFragmentAnimationParams.
- changes.get(i).setAnimationOptions(mOverrideOptions);
- }
+ final List<TransitionInfo.Change> changes = info.getChanges();
+ for (int i = changes.size() - 1; i >= 0; --i) {
+ final WindowContainer<?> container = mTargets.get(i).mContainer;
+ if (container.asActivityRecord() != null
+ || shouldApplyAnimOptionsToTask(container.asTask())) {
+ changes.get(i).setAnimationOptions(mOverrideOptions);
+ // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
+ changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
+ } else if (shouldApplyAnimOptionsToEmbeddedTf(container.asTaskFragment())) {
+ // We only override AnimationOptions because backgroundColor should be from
+ // TaskFragmentAnimationParams.
+ changes.get(i).setAnimationOptions(mOverrideOptions);
}
}
updateActivityTargetForCrossProfileAnimation(info);
@@ -2933,9 +2928,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
final AnimationOptions animOptionsForActivityTransition =
calculateAnimationOptionsForActivityTransition(type, sortedTargets);
- if (!Flags.moveAnimationOptionsToChange() && animOptionsForActivityTransition != null) {
- out.setAnimationOptions(animOptionsForActivityTransition);
- }
final ArraySet<WindowContainer> occludedAtEndContainers = new ArraySet<>();
// Convert all the resolved ChangeInfos into TransactionInfo.Change objects in order.
@@ -3059,28 +3051,26 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
}
AnimationOptions animOptions = null;
- if (Flags.moveAnimationOptionsToChange()) {
- if (activityRecord != null && animOptionsForActivityTransition != null) {
- animOptions = animOptionsForActivityTransition;
- } else if (Flags.activityEmbeddingOverlayPresentationFlag()
- && isEmbeddedTaskFragment) {
- final TaskFragmentAnimationParams params = taskFragment.getAnimationParams();
- if (params.hasOverrideAnimation()) {
- // Only set AnimationOptions if there's any animation override.
- // We use separated field for backgroundColor, and
- // AnimationOptions#backgroundColor will be removed in long term.
- animOptions = AnimationOptions.makeCustomAnimOptions(
- taskFragment.getTask().getBasePackageName(),
- params.getOpenAnimationResId(), params.getChangeAnimationResId(),
- params.getCloseAnimationResId(), 0 /* backgroundColor */,
- false /* overrideTaskTransition */);
- animOptions.setUserId(taskFragment.getTask().mUserId);
- }
- }
- if (animOptions != null) {
- change.setAnimationOptions(animOptions);
+ if (activityRecord != null && animOptionsForActivityTransition != null) {
+ animOptions = animOptionsForActivityTransition;
+ } else if (Flags.activityEmbeddingOverlayPresentationFlag()
+ && isEmbeddedTaskFragment) {
+ final TaskFragmentAnimationParams params = taskFragment.getAnimationParams();
+ if (params.hasOverrideAnimation()) {
+ // Only set AnimationOptions if there's any animation override.
+ // We use separated field for backgroundColor, and
+ // AnimationOptions#backgroundColor will be removed in long term.
+ animOptions = AnimationOptions.makeCustomAnimOptions(
+ taskFragment.getTask().getBasePackageName(),
+ params.getOpenAnimationResId(), params.getChangeAnimationResId(),
+ params.getCloseAnimationResId(), 0 /* backgroundColor */,
+ false /* overrideTaskTransition */);
+ animOptions.setUserId(taskFragment.getTask().mUserId);
}
}
+ if (animOptions != null) {
+ change.setAnimationOptions(animOptions);
+ }
if (activityRecord != null) {
change.setActivityComponent(activityRecord.mActivityComponent);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
index 2ee34d3a4b36..b9f88cd73e9d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
@@ -82,8 +82,6 @@ import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.IBinder;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -104,7 +102,6 @@ import androidx.annotation.NonNull;
import androidx.test.filters.SmallTest;
import com.android.internal.graphics.ColorUtils;
-import com.android.window.flags.Flags;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -2009,21 +2006,6 @@ public class TransitionTests extends WindowTestsBase {
assertEquals(expectedBackgroundColor, info.getChanges().get(1).getBackgroundColor());
}
- @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
- @Test
- public void testOverrideAnimationOptionsToInfoIfNecessary_disableAnimOptionsPerChange() {
- ActivityRecord r = initializeOverrideAnimationOptionsTest();
- TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
- .makeCommonAnimOptions("testPackage");
- mTransition.setOverrideAnimation(options, r, null /* startCallback */,
- null /* finishCallback */);
-
- mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
-
- assertEquals(options, mInfo.getAnimationOptions());
- }
-
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_fromStyleAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2049,7 +2031,6 @@ public class TransitionTests extends WindowTestsBase {
options, activityChange.getAnimationOptions());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_sceneAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2075,7 +2056,6 @@ public class TransitionTests extends WindowTestsBase {
options, activityChange.getAnimationOptions());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_crossProfileAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2103,7 +2083,6 @@ public class TransitionTests extends WindowTestsBase {
assertTrue(activityChange.hasFlags(FLAG_CROSS_PROFILE_OWNER_THUMBNAIL));
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptions() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2136,7 +2115,6 @@ public class TransitionTests extends WindowTestsBase {
options.getBackgroundColor(), activityChange.getBackgroundColor());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_haveTaskFragmentAnimParams() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2185,7 +2163,6 @@ public class TransitionTests extends WindowTestsBase {
options.getBackgroundColor(), activityChange.getBackgroundColor());
}
- @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@Test
public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptionsWithTaskOverride() {
ActivityRecord r = initializeOverrideAnimationOptionsTest();
@@ -2415,7 +2392,6 @@ public class TransitionTests extends WindowTestsBase {
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_FOCUS_IN_SHELL_TRANSITIONS)
public void testMoveDisplayToTop() {
// Set up two displays, each of which has a task.
DisplayContent otherDisplay = createNewDisplay();