From 6d54305170ecd2133efb767dc99eb175fcf821fe Mon Sep 17 00:00:00 2001 From: Orhan Uysal Date: Mon, 29 Apr 2024 15:31:44 +0000 Subject: [PATCH] Pass OverviewComponentObserver as a parameter. Instead of instantiating a new OVerviewComponentObserver, instantiate one in QuickstepLauncher and pass it down to relevant classes. Test: Manual Bug: 336155199 Flag: ACONFIG com.android.window.flags.enable_desktop_windowing_mode DEVELOPMENT Change-Id: Ifcc40c63f0649544a92e7f6d4a00d9edcd9f7fe1 --- .../uioverrides/QuickstepLauncher.java | 11 +++++++++-- .../quickstep/OverviewComponentObserver.java | 2 ++ .../util/SplitSelectStateController.java | 18 ++++++++++-------- .../SplitWithKeyboardShortcutController.java | 9 +++++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 4acddeec50..4184ab27cc 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -166,6 +166,8 @@ import com.android.launcher3.util.StartActivityParams; import com.android.launcher3.util.TouchController; import com.android.launcher3.widget.LauncherWidgetHolder; import com.android.quickstep.OverviewCommandHelper; +import com.android.quickstep.OverviewComponentObserver; +import com.android.quickstep.RecentsAnimationDeviceState; import com.android.quickstep.RecentsModel; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; @@ -264,6 +266,10 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer getDepthController(), getStatsLogManager(), systemUiProxy, RecentsModel.INSTANCE.get(this), () -> onStateBack()); + RecentsAnimationDeviceState deviceState = new RecentsAnimationDeviceState(asContext()); + // TODO(b/337863494): Explore use of the same OverviewComponentObserver across launcher + OverviewComponentObserver overviewComponentObserver = new OverviewComponentObserver( + asContext(), deviceState); if (enableDesktopWindowingMode()) { mDesktopRecentsTransitionController = new DesktopRecentsTransitionController( getStateManager(), systemUiProxy, getIApplicationThread(), @@ -272,7 +278,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer overviewPanel.init(mActionsView, mSplitSelectStateController, mDesktopRecentsTransitionController); mSplitWithKeyboardShortcutController = new SplitWithKeyboardShortcutController(this, - mSplitSelectStateController); + mSplitSelectStateController, overviewComponentObserver, deviceState); mSplitToWorkspaceController = new SplitToWorkspaceController(this, mSplitSelectStateController); mActionsView.updateDimension(getDeviceProfile(), overviewPanel.getLastComputedTaskSize()); @@ -287,7 +293,8 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer if (enableDesktopWindowingMode()) { mDesktopVisibilityController = new DesktopVisibilityController(this); mDesktopVisibilityController.registerSystemUiListener(); - mSplitSelectStateController.initSplitFromDesktopController(this); + mSplitSelectStateController.initSplitFromDesktopController(this, + overviewComponentObserver); } mHotseatPredictionController = new HotseatPredictionController(this); diff --git a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java index 0a02e994be..a71e3149ab 100644 --- a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java +++ b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java @@ -109,6 +109,8 @@ public final class OverviewComponentObserver { * Sets a listener for changes in {@link #isHomeAndOverviewSame()} */ public void setOverviewChangeListener(Consumer overviewChangeListener) { + // TODO(b/337861962): This method should be able to support multiple listeners instead of + // one so that we can reuse the same instance of this class across multiple places mOverviewChangeListener = overviewChangeListener; } diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index c257be6af8..df1879efa8 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -90,7 +90,6 @@ import com.android.launcher3.util.SplitConfigurationOptions.StagePosition; import com.android.quickstep.OverviewComponentObserver; import com.android.quickstep.RecentsAnimationCallbacks; import com.android.quickstep.RecentsAnimationController; -import com.android.quickstep.RecentsAnimationDeviceState; import com.android.quickstep.RecentsAnimationTargets; import com.android.quickstep.RecentsModel; import com.android.quickstep.SplitSelectionListener; @@ -646,8 +645,13 @@ public class SplitSelectStateController { } } - public void initSplitFromDesktopController(QuickstepLauncher launcher) { - initSplitFromDesktopController(new SplitFromDesktopController(launcher)); + /** + * Init {@code SplitFromDesktopController} + */ + public void initSplitFromDesktopController(QuickstepLauncher launcher, + OverviewComponentObserver overviewComponentObserver) { + initSplitFromDesktopController( + new SplitFromDesktopController(launcher, overviewComponentObserver)); } @VisibleForTesting @@ -956,12 +960,10 @@ public class SplitSelectStateController { private ISplitSelectListener mSplitSelectListener; private Drawable mAppIcon; - public SplitFromDesktopController(QuickstepLauncher launcher) { + public SplitFromDesktopController(QuickstepLauncher launcher, + OverviewComponentObserver overviewComponentObserver) { mLauncher = launcher; - RecentsAnimationDeviceState deviceState = new RecentsAnimationDeviceState( - launcher.getApplicationContext()); - mOverviewComponentObserver = - new OverviewComponentObserver(launcher.getApplicationContext(), deviceState); + mOverviewComponentObserver = overviewComponentObserver; mSplitPlaceholderSize = mLauncher.getResources().getDimensionPixelSize( R.dimen.split_placeholder_size); mSplitPlaceholderInset = mLauncher.getResources().getDimensionPixelSize( diff --git a/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java index 555bf216e2..85d4f4b3ed 100644 --- a/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java +++ b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java @@ -62,12 +62,13 @@ public class SplitWithKeyboardShortcutController { private final int mSplitPlaceholderInset; public SplitWithKeyboardShortcutController(QuickstepLauncher launcher, - SplitSelectStateController controller) { + SplitSelectStateController controller, + OverviewComponentObserver overviewComponentObserver, + RecentsAnimationDeviceState deviceState) { mLauncher = launcher; mController = controller; - mDeviceState = new RecentsAnimationDeviceState(launcher.getApplicationContext()); - mOverviewComponentObserver = new OverviewComponentObserver(launcher.getApplicationContext(), - mDeviceState); + mDeviceState = deviceState; + mOverviewComponentObserver = overviewComponentObserver; mSplitPlaceholderSize = mLauncher.getResources().getDimensionPixelSize( R.dimen.split_placeholder_size);