From e5501c9068f9d3fc63a724aea59f0359dc7bd30c Mon Sep 17 00:00:00 2001 From: Issei Suzuki Date: Fri, 10 Jun 2022 16:48:58 +0000 Subject: [PATCH] Dedup predicates to check if remote animation target can be created. The predicates below were used to check if remote animation target could be created from a WindowContainer. - WindowContainer#canCreateRemoteAnimationTarget - WindowContainer#canBeAnimationTarget The former was used by WM shell transition and the later was used by the legacy transition. Merged the predicates. Test: no-op refactoring. Existing tests pass. Bug: 235601859 Change-Id: I985605b0c1eba22be16a32db6294e9623ea84705 --- .../core/java/com/android/server/wm/ActivityRecord.java | 5 ----- .../com/android/server/wm/AppTransitionController.java | 1 - .../core/java/com/android/server/wm/TaskDisplayArea.java | 4 +++- .../core/java/com/android/server/wm/TaskFragment.java | 5 ----- .../core/java/com/android/server/wm/WindowContainer.java | 8 -------- .../src/com/android/server/wm/TransitionTests.java | 3 +++ 6 files changed, 6 insertions(+), 20 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index dcbc8f9a6abd2..7e633146e390c 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -9788,11 +9788,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A super.finishSync(outMergedTransaction, cancel); } - @Override - boolean canBeAnimationTarget() { - return true; - } - @Nullable Point getMinDimensions() { final ActivityInfo.WindowLayout windowLayout = info.windowLayout; diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index abb3f3af66fbe..6d279d620d52a 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -928,7 +928,6 @@ public class AppTransitionController { // TODO(b/213312721): Remove this once ShellTransition is enabled. continue; } else if (parent == null || !parent.canCreateRemoteAnimationTarget() - || !parent.canBeAnimationTarget() // We cannot promote the animation on Task's parent when the task is in // clearing task in case the animating get stuck when performing the opening // task that behind it. diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 02e796904b16a..1327e50cd710d 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1778,7 +1778,9 @@ final class TaskDisplayArea extends DisplayArea { @Override boolean canCreateRemoteAnimationTarget() { - return true; + // In the legacy transition system, promoting animation target from TaskFragment to + // TaskDisplayArea prevents running finish animation. See b/194649929. + return WindowManagerService.sEnableShellTransitions; } /** diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index d77e9b397ef9c..18d6827e09be7 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -2568,11 +2568,6 @@ class TaskFragment extends WindowContainer { } } - @Override - boolean canBeAnimationTarget() { - return true; - } - @Override boolean fillsParent() { // From the perspective of policy, we still want to report that this task fills parent diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index e00cbb93a8737..6ffa0fcc5d528 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -3141,14 +3141,6 @@ class WindowContainer extends ConfigurationContainer< return false; } - /** - * {@code true} to indicate that this container can be a candidate of - * {@link AppTransitionController#getAnimationTargets(ArraySet, ArraySet, boolean) animation - * target}. */ - boolean canBeAnimationTarget() { - return false; - } - boolean okToDisplay() { final DisplayContent dc = getDisplayContent(); return dc != null && dc.okToDisplay(); 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 84e94ff271c30..149ca7cce8354 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -45,6 +45,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeFalse; +import static org.junit.Assume.assumeTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; @@ -210,6 +211,8 @@ public class TransitionTests extends WindowTestsBase { @Test public void testCreateInfo_DisplayArea() { + assumeTrue(mDisplayContent.mTransitionController.useShellTransitionsRotation()); + final Transition transition = createTestTransition(TRANSIT_OPEN); ArrayMap changes = transition.mChanges; ArraySet participants = transition.mParticipants;