diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java index 0b43eb5419f7b..b8bd7032f6781 100644 --- a/core/java/android/window/TransitionInfo.java +++ b/core/java/android/window/TransitionInfo.java @@ -144,8 +144,11 @@ public final class TransitionInfo implements Parcelable { /** The window should have no animation (by policy). */ public static final int FLAG_NO_ANIMATION = 1 << 18; + /** The task is launching behind home. */ + public static final int FLAG_TASK_LAUNCHING_BEHIND = 1 << 19; + /** The first unused bit. This can be used by remotes to attach custom flags to this change. */ - public static final int FLAG_FIRST_CUSTOM = 1 << 19; + public static final int FLAG_FIRST_CUSTOM = 1 << 20; /** The change belongs to a window that won't contain activities. */ public static final int FLAGS_IS_NON_APP_WINDOW = @@ -173,6 +176,7 @@ public final class TransitionInfo implements Parcelable { FLAG_IS_SYSTEM_WINDOW, FLAG_BACK_GESTURE_ANIMATED, FLAG_NO_ANIMATION, + FLAG_TASK_LAUNCHING_BEHIND, FLAG_FIRST_CUSTOM }) public @interface ChangeFlags {} @@ -395,6 +399,9 @@ public final class TransitionInfo implements Parcelable { if ((flags & FLAG_NO_ANIMATION) != 0) { sb.append(sb.length() == 0 ? "" : "|").append("NO_ANIMATION"); } + if ((flags & FLAG_TASK_LAUNCHING_BEHIND) != 0) { + sb.append((sb.length() == 0 ? "" : "|") + "TASK_LAUNCHING_BEHIND"); + } if ((flags & FLAG_FIRST_CUSTOM) != 0) { sb.append(sb.length() == 0 ? "" : "|").append("FIRST_CUSTOM"); } diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index bf6983b90fbb1..f2e4937aabbf7 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -53,6 +53,7 @@ import static android.window.TransitionInfo.FLAG_IS_WALLPAPER; import static android.window.TransitionInfo.FLAG_NO_ANIMATION; import static android.window.TransitionInfo.FLAG_OCCLUDES_KEYGUARD; import static android.window.TransitionInfo.FLAG_SHOW_WALLPAPER; +import static android.window.TransitionInfo.FLAG_TASK_LAUNCHING_BEHIND; import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static android.window.TransitionInfo.FLAG_WILL_IME_SHOWN; @@ -2272,6 +2273,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { .isMonitorTransitionTarget(topActivity)) { flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED; } + if (topActivity != null && topActivity.mLaunchTaskBehind) { + Slog.e(TAG, "Unexpected launch-task-behind operation in shell transition"); + flags |= FLAG_TASK_LAUNCHING_BEHIND; + } } else { if (task.mAtmService.mBackNavigationController .isMonitorTransitionTarget(task)) {