From 89b08767630cdaba6f85b9aacac2b6c3defab3c5 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Wed, 22 Jun 2022 22:46:33 +0800 Subject: [PATCH] Do not freeze window in WM Core if Shell transition is enabled Also disable legacy animation override from the organizer since it will never be used with Shell transition enabled. Bug: 207070762 Test: pass existing Change-Id: I16aaad606acb51bb47e881d5d533a5a3b1e1fbc9 --- .../window/extensions/embedding/SplitController.java | 8 ++++++++ .../core/java/com/android/server/wm/WindowContainer.java | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 242e9ab6beee5..b90b4c1b39a12 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -43,6 +43,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Looper; +import android.os.SystemProperties; import android.util.ArraySet; import android.util.Log; import android.util.Pair; @@ -70,6 +71,8 @@ import java.util.function.Consumer; public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmentCallback, ActivityEmbeddingComponent { static final String TAG = "SplitController"; + static final boolean ENABLE_SHELL_TRANSITIONS = + SystemProperties.getBoolean("persist.wm.debug.shell_transit", false); @VisibleForTesting @GuardedBy("mLock") @@ -332,6 +335,11 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen * bounds is large enough for at least one split rule. */ private void updateAnimationOverride(@NonNull TaskContainer taskContainer) { + if (ENABLE_SHELL_TRANSITIONS) { + // TODO(b/207070762): cleanup with legacy app transition + // Animation will be handled by WM Shell with Shell transition enabled. + return; + } if (!taskContainer.isTaskBoundsInitialized() || !taskContainer.isWindowingModeInitialized()) { // We don't know about the Task bounds/windowingMode yet. diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 59aed833f3f3c..89c71c909641e 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -2816,6 +2816,10 @@ class WindowContainer extends ConfigurationContainer< * snapshot from {@link #getFreezeSnapshotTarget()}. */ void initializeChangeTransition(Rect startBounds, @Nullable SurfaceControl freezeTarget) { + if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { + // TODO(b/207070762): request shell transition for activityEmbedding change. + return; + } mDisplayContent.prepareAppTransition(TRANSIT_CHANGE); mDisplayContent.mChangingContainers.add(this); // Calculate the relative position in parent container.