diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 76bc36620c850..94a43a426fc69 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7568,6 +7568,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A record.mStartBounds); } + @Override + boolean canCreateRemoteAnimationTarget() { + return true; + } + @Override void getAnimationFrames(Rect outFrame, Rect outInsets, Rect outStableInsets, Rect outSurfaceInsets) { diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index 0912b2e8b52f0..6a47c9e217f84 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -446,7 +446,7 @@ public class AppTransitionController { siblings.add(current); boolean canPromote = true; - if (parent == null) { + if (parent == null || !parent.canCreateRemoteAnimationTarget()) { canPromote = false; } else { // In case a descendant of the parent belongs to the other group, we cannot promote diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 27acb2356585b..ba3db3a3cfe1a 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3087,6 +3087,11 @@ class Task extends WindowContainer { return activity != null ? activity.createRemoteAnimationTarget(record) : null; } + @Override + boolean canCreateRemoteAnimationTarget() { + return true; + } + WindowState getTopVisibleAppMainWindow() { final ActivityRecord activity = getTopVisibleActivity(); return activity != null ? activity.findMainWindow() : null; diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index a0a70dc6a1d76..36c5262b833f8 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -2186,6 +2186,10 @@ class WindowContainer extends ConfigurationContainer< return null; } + boolean canCreateRemoteAnimationTarget() { + return false; + } + boolean okToDisplay() { final DisplayContent dc = getDisplayContent(); return dc != null && dc.okToDisplay();