diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index acb9900bafe98..7a302110b13b7 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7627,6 +7627,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 faa6bac8e6236..88d4fb31b16b0 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3121,6 +3121,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 b12c6980cccef..10d34b57bacba 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -2196,6 +2196,10 @@ class WindowContainer extends ConfigurationContainer< return null; } + boolean canCreateRemoteAnimationTarget() { + return false; + } + boolean okToDisplay() { final DisplayContent dc = getDisplayContent(); return dc != null && dc.okToDisplay();