Loading services/core/java/com/android/server/wm/Transition.java +13 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.app.ActivityOptions.ANIM_CUSTOM; import static android.app.ActivityOptions.ANIM_OPEN_CROSS_PROFILE_APPS; import static android.app.ActivityOptions.ANIM_SCENE_TRANSITION; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; Loading Loading @@ -1936,8 +1937,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { for (int i = changes.size() - 1; i >= 0; --i) { final WindowContainer<?> container = mTargets.get(i).mContainer; if (container.asActivityRecord() != null || (container.asTask() != null && mOverrideOptions.getOverrideTaskTransition())) { || shouldApplyAnimOptionsToTask(container.asTask())) { changes.get(i).setAnimationOptions(mOverrideOptions); // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions. changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor()); Loading @@ -1951,6 +1951,16 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { updateActivityTargetForCrossProfileAnimation(info); } private boolean shouldApplyAnimOptionsToTask(@Nullable Task task) { if (task == null || mOverrideOptions == null) { return false; } final int animType = mOverrideOptions.getType(); // Only apply AnimationOptions to Task if it is specified in #getOverrideTaskTransition // or it's ANIM_SCENE_TRANSITION. return animType == ANIM_SCENE_TRANSITION || mOverrideOptions.getOverrideTaskTransition(); } private boolean shouldApplyAnimOptionsToEmbeddedTf(@Nullable TaskFragment taskFragment) { if (taskFragment == null || !taskFragment.isEmbedded()) { return false; Loading Loading @@ -2377,6 +2387,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { sb.append(" id=" + mSyncId); sb.append(" type=" + transitTypeToString(mType)); sb.append(" flags=0x" + Integer.toHexString(mFlags)); sb.append(" overrideAnimOptions=" + mOverrideOptions); sb.append('}'); return sb.toString(); } Loading services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +27 −1 Original line number Diff line number Diff line Loading @@ -2021,7 +2021,7 @@ public class TransitionTests extends WindowTestsBase { @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_nonCustomAnimOptions() { public void testOverrideAnimationOptionsToInfoIfNecessary_fromStyleAnimOptions() { initializeOverrideAnimationOptionsTest(); TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions .makeCommonAnimOptions("testPackage"); Loading @@ -2045,6 +2045,32 @@ public class TransitionTests extends WindowTestsBase { options, activityChange.getAnimationOptions()); } @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_sceneAnimOptions() { initializeOverrideAnimationOptionsTest(); TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions .makeSceneTransitionAnimOptions(); mTransition.setOverrideAnimation(options, null /* startCallback */, null /* finishCallback */); mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo); final TransitionInfo.Change displayChange = mInfo.getChanges().get(0); final TransitionInfo.Change taskChange = mInfo.getChanges().get(1); final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2); final TransitionInfo.Change activityChange = mInfo.getChanges().get(3); assertNull("Display change's AnimationOptions must not be overridden.", displayChange.getAnimationOptions()); assertEquals("Task change's AnimationOptions must be overridden.", options, taskChange.getAnimationOptions()); assertNull("Embedded TF change's AnimationOptions must not be overridden.", embeddedTfChange.getAnimationOptions()); assertEquals("Activity change's AnimationOptions must be overridden.", options, activityChange.getAnimationOptions()); } @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_crossProfileAnimOptions() { Loading Loading
services/core/java/com/android/server/wm/Transition.java +13 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.app.ActivityOptions.ANIM_CUSTOM; import static android.app.ActivityOptions.ANIM_OPEN_CROSS_PROFILE_APPS; import static android.app.ActivityOptions.ANIM_SCENE_TRANSITION; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; Loading Loading @@ -1936,8 +1937,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { for (int i = changes.size() - 1; i >= 0; --i) { final WindowContainer<?> container = mTargets.get(i).mContainer; if (container.asActivityRecord() != null || (container.asTask() != null && mOverrideOptions.getOverrideTaskTransition())) { || shouldApplyAnimOptionsToTask(container.asTask())) { changes.get(i).setAnimationOptions(mOverrideOptions); // TODO(b/295805497): Extract mBackgroundColor from AnimationOptions. changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor()); Loading @@ -1951,6 +1951,16 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { updateActivityTargetForCrossProfileAnimation(info); } private boolean shouldApplyAnimOptionsToTask(@Nullable Task task) { if (task == null || mOverrideOptions == null) { return false; } final int animType = mOverrideOptions.getType(); // Only apply AnimationOptions to Task if it is specified in #getOverrideTaskTransition // or it's ANIM_SCENE_TRANSITION. return animType == ANIM_SCENE_TRANSITION || mOverrideOptions.getOverrideTaskTransition(); } private boolean shouldApplyAnimOptionsToEmbeddedTf(@Nullable TaskFragment taskFragment) { if (taskFragment == null || !taskFragment.isEmbedded()) { return false; Loading Loading @@ -2377,6 +2387,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { sb.append(" id=" + mSyncId); sb.append(" type=" + transitTypeToString(mType)); sb.append(" flags=0x" + Integer.toHexString(mFlags)); sb.append(" overrideAnimOptions=" + mOverrideOptions); sb.append('}'); return sb.toString(); } Loading
services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +27 −1 Original line number Diff line number Diff line Loading @@ -2021,7 +2021,7 @@ public class TransitionTests extends WindowTestsBase { @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_nonCustomAnimOptions() { public void testOverrideAnimationOptionsToInfoIfNecessary_fromStyleAnimOptions() { initializeOverrideAnimationOptionsTest(); TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions .makeCommonAnimOptions("testPackage"); Loading @@ -2045,6 +2045,32 @@ public class TransitionTests extends WindowTestsBase { options, activityChange.getAnimationOptions()); } @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_sceneAnimOptions() { initializeOverrideAnimationOptionsTest(); TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions .makeSceneTransitionAnimOptions(); mTransition.setOverrideAnimation(options, null /* startCallback */, null /* finishCallback */); mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo); final TransitionInfo.Change displayChange = mInfo.getChanges().get(0); final TransitionInfo.Change taskChange = mInfo.getChanges().get(1); final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2); final TransitionInfo.Change activityChange = mInfo.getChanges().get(3); assertNull("Display change's AnimationOptions must not be overridden.", displayChange.getAnimationOptions()); assertEquals("Task change's AnimationOptions must be overridden.", options, taskChange.getAnimationOptions()); assertNull("Embedded TF change's AnimationOptions must not be overridden.", embeddedTfChange.getAnimationOptions()); assertEquals("Activity change's AnimationOptions must be overridden.", options, activityChange.getAnimationOptions()); } @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE) @Test public void testOverrideAnimationOptionsToInfoIfNecessary_crossProfileAnimOptions() { Loading