From 13b7ceeff05a4402279088dbf0e9e0d57b0249d5 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Tue, 2 Apr 2024 17:07:03 +0100 Subject: [PATCH] Clean-up unnecessary desktop windowing flag usage - mDesktopVisibilityController will now be null if desktop windowing flag is disabled - As a result, all code that uses mDesktopVisibilityController no longer need to check desktop windowing flag - DesktopTaskView/DesktopTask only populates when flag is enabled, so we don't need to check flag if we already check DesktopTaskView/DesktopTask - Removed the flag check in SplitToWorkspaceController, as we shouldn't enable split from workspace base on desktop windowing, contextual split already have its own flag - Also avoid creating GroupTask or DesktopTask for freeform tasks when flag is off, to avoid a crash in RecentsView Bug: 332655617 Test: manual with desktop windowing flag on/off Flag: ACONFIG com.android.window.flags.enable_desktop_windowing_mode DEVELOPMENT Change-Id: I0e45f73ad2b0d99dfb4ec3215f973679ca93957c --- .../DesktopVisibilityController.java | 16 ------------ .../KeyboardQuickSwitchController.java | 20 ++++++--------- .../taskbar/LauncherTaskbarUIController.java | 5 +--- .../taskbar/TaskbarNavButtonController.java | 11 +++----- .../uioverrides/QuickstepLauncher.java | 21 ++++++++-------- .../states/BackgroundAppState.java | 4 +-- .../uioverrides/states/QuickSwitchState.java | 9 +++---- .../android/quickstep/AbsSwipeUpHandler.java | 13 ++++------ .../quickstep/BaseActivityInterface.java | 25 ++++++++----------- .../android/quickstep/RecentTasksList.java | 10 +++++--- .../android/quickstep/RemoteTargetGluer.java | 21 +++++++--------- .../util/SplitSelectStateController.java | 2 -- .../util/SplitToWorkspaceController.java | 5 +--- .../quickstep/views/LauncherRecentsView.java | 7 +++--- .../android/quickstep/views/RecentsView.java | 18 ++++--------- 15 files changed, 67 insertions(+), 120 deletions(-) diff --git a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java index f9a8c991ba..176091a141 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java @@ -19,7 +19,6 @@ import static android.view.View.VISIBLE; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.os.Debug; import android.os.SystemProperties; @@ -136,9 +135,6 @@ public class DesktopVisibilityController { Log.d(TAG, "setVisibleFreeformTasksCount: visibleTasksCount=" + visibleTasksCount + " currentValue=" + mVisibleFreeformTasksCount); } - if (!enableDesktopWindowingMode()) { - return; - } if (visibleTasksCount != mVisibleFreeformTasksCount) { final boolean wasVisible = mVisibleFreeformTasksCount > 0; @@ -180,9 +176,6 @@ public class DesktopVisibilityController { Log.d(TAG, "setOverviewStateEnabled: enabled=" + overviewStateEnabled + " currentValue=" + mInOverviewState); } - if (!enableDesktopWindowingMode()) { - return; - } if (overviewStateEnabled != mInOverviewState) { mInOverviewState = overviewStateEnabled; if (mInOverviewState) { @@ -202,9 +195,6 @@ public class DesktopVisibilityController { Log.d(TAG, "setBackgroundStateEnabled: enabled=" + backgroundStateEnabled + " currentValue=" + mBackgroundStateEnabled); } - if (!enableDesktopWindowingMode()) { - return; - } if (backgroundStateEnabled != mBackgroundStateEnabled) { mBackgroundStateEnabled = backgroundStateEnabled; if (mBackgroundStateEnabled) { @@ -229,9 +219,6 @@ public class DesktopVisibilityController { * Notify controller that recents gesture has started. */ public void setRecentsGestureStart() { - if (!enableDesktopWindowingMode()) { - return; - } if (DEBUG) { Log.d(TAG, "setRecentsGestureStart"); } @@ -243,9 +230,6 @@ public class DesktopVisibilityController { * {@link com.android.quickstep.GestureState.GestureEndTarget} */ public void setRecentsGestureEnd(@Nullable GestureState.GestureEndTarget endTarget) { - if (!enableDesktopWindowingMode()) { - return; - } if (DEBUG) { Log.d(TAG, "setRecentsGestureEnd: endTarget=" + endTarget); } diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java index bed85d7bd9..d89f49b6aa 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java @@ -15,8 +15,6 @@ */ package com.android.launcher3.taskbar; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; - import android.content.ComponentName; import android.content.pm.ActivityInfo; @@ -117,9 +115,7 @@ public final class KeyboardQuickSwitchController implements DesktopVisibilityController desktopController = LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); final boolean onDesktop = - enableDesktopWindowingMode() - && desktopController != null - && desktopController.areFreeformTasksVisible(); + desktopController != null && desktopController.areFreeformTasksVisible(); if (mModel.isTaskListValid(mTaskListChangeId)) { // When we are opening the KQS with no focus override, check if the first task is @@ -158,14 +154,12 @@ public final class KeyboardQuickSwitchController implements // Hide all desktop tasks and show them on the hidden tile int hiddenDesktopTasks = 0; - if (enableDesktopWindowingMode()) { - DesktopTask desktopTask = findDesktopTask(tasks); - if (desktopTask != null) { - hiddenDesktopTasks = desktopTask.tasks.size(); - tasks = tasks.stream() - .filter(t -> !(t instanceof DesktopTask)) - .collect(Collectors.toCollection(ArrayList::new)); - } + DesktopTask desktopTask = findDesktopTask(tasks); + if (desktopTask != null) { + hiddenDesktopTasks = desktopTask.tasks.size(); + tasks = tasks.stream() + .filter(t -> !(t instanceof DesktopTask)) + .collect(Collectors.toCollection(ArrayList::new)); } mTasks = tasks.stream() .limit(MAX_TASKS) diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index a59aeada5f..55e5ff60a2 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -21,7 +21,6 @@ import static com.android.launcher3.statemanager.BaseState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.taskbar.TaskbarEduTooltipControllerKt.TOOLTIP_STEP_FEATURES; import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_VISIBLE; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.animation.Animator; import android.animation.AnimatorSet; @@ -209,9 +208,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { DesktopVisibilityController desktopController = LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); final boolean onDesktop = - enableDesktopWindowingMode() - && desktopController != null - && desktopController.areFreeformTasksVisible(); + desktopController != null && desktopController.areFreeformTasksVisible(); if (onDesktop) { isVisible = false; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java index e293ad4d73..03f55cac84 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java @@ -27,7 +27,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING; @@ -281,12 +280,10 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa private void navigateHome() { TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY); - if (enableDesktopWindowingMode()) { - DesktopVisibilityController desktopVisibilityController = - LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); - if (desktopVisibilityController != null) { - desktopVisibilityController.onHomeActionTriggered(); - } + DesktopVisibilityController desktopVisibilityController = + LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); + if (desktopVisibilityController != null) { + desktopVisibilityController.onHomeActionTriggered(); } mService.getOverviewCommandHelper().addCommand(OverviewCommandHelper.TYPE_HOME); diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index b49c7525ea..c77e375226 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -217,7 +217,7 @@ public class QuickstepLauncher extends Launcher { private FixedContainerItems mAllAppsPredictions; private HotseatPredictionController mHotseatPredictionController; private DepthController mDepthController; - private DesktopVisibilityController mDesktopVisibilityController; + private @Nullable DesktopVisibilityController mDesktopVisibilityController; private QuickstepTransitionManager mAppTransitionManager; private OverviewActionsView mActionsView; private TISBindHelper mTISBindHelper; @@ -284,8 +284,8 @@ public class QuickstepLauncher extends Launcher { mTISBindHelper = new TISBindHelper(this, this::onTISConnected); mDepthController = new DepthController(this); - mDesktopVisibilityController = new DesktopVisibilityController(this); if (enableDesktopWindowingMode()) { + mDesktopVisibilityController = new DesktopVisibilityController(this); mDesktopVisibilityController.registerSystemUiListener(); mSplitSelectStateController.initSplitFromDesktopController(this); } @@ -948,15 +948,13 @@ public class QuickstepLauncher extends Launcher { @Override public void setResumed() { - if (enableDesktopWindowingMode()) { - DesktopVisibilityController controller = mDesktopVisibilityController; - if (controller != null && controller.areFreeformTasksVisible() - && !controller.isRecentsGestureInProgress()) { - // Return early to skip setting activity to appear as resumed - // TODO(b/255649902): shouldn't be needed when we have a separate launcher state - // for desktop that we can use to control other parts of launcher - return; - } + if (mDesktopVisibilityController != null + && mDesktopVisibilityController.areFreeformTasksVisible() + && !mDesktopVisibilityController.isRecentsGestureInProgress()) { + // Return early to skip setting activity to appear as resumed + // TODO(b/255649902): shouldn't be needed when we have a separate launcher state + // for desktop that we can use to control other parts of launcher + return; } super.setResumed(); } @@ -1090,6 +1088,7 @@ public class QuickstepLauncher extends Launcher { return mDepthController; } + @Nullable public DesktopVisibilityController getDesktopVisibilityController() { return mDesktopVisibilityController; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java index a443c003e8..547de77f64 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java @@ -18,7 +18,6 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.content.Context; import android.graphics.Color; @@ -92,8 +91,7 @@ public class BackgroundAppState extends OverviewState { @Override protected float getDepthUnchecked(Context context) { - if (enableDesktopWindowingMode() - && Launcher.getLauncher(context).areFreeformTasksVisible()) { + if (Launcher.getLauncher(context).areFreeformTasksVisible()) { // Don't blur the background while freeform tasks are visible return BaseDepthController.DEPTH_0_PERCENT; } else if (enableScalingRevealHomeAnimation()) { diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java index 2587395830..7fb811d4b7 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java @@ -16,7 +16,6 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.graphics.Color; @@ -46,11 +45,9 @@ public class QuickSwitchState extends BackgroundAppState { @Override public int getWorkspaceScrimColor(Launcher launcher) { - if (enableDesktopWindowingMode()) { - if (launcher.areFreeformTasksVisible()) { - // No scrim while freeform tasks are visible - return Color.TRANSPARENT; - } + if (launcher.areFreeformTasksVisible()) { + // No scrim while freeform tasks are visible + return Color.TRANSPARENT; } DeviceProfile dp = launcher.getDeviceProfile(); if (dp.isTaskbarPresentInApps) { diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index dc1c6a6600..62e823aea1 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -61,7 +61,6 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.ON_SETTLED_ON_END_TARGET; import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -947,7 +946,7 @@ public abstract class AbsSwipeUpHandler, public void onRecentsAnimationStart(RecentsAnimationController controller, RecentsAnimationTargets targets) { super.onRecentsAnimationStart(controller, targets); - if (enableDesktopWindowingMode() && targets.hasDesktopTasks()) { + if (targets.hasDesktopTasks()) { mRemoteTargetHandles = mTargetGluer.assignTargetsForDesktop(targets); } else { int untrimmedAppCount = mRemoteTargetHandles.length; @@ -1170,13 +1169,11 @@ public abstract class AbsSwipeUpHandler, mStateCallback.setState(STATE_SCALED_CONTROLLER_HOME | STATE_CAPTURE_SCREENSHOT); // Notify the SysUI to use fade-in animation when entering PiP SystemUiProxy.INSTANCE.get(mContext).setPipAnimationTypeToAlpha(); - if (enableDesktopWindowingMode()) { + DesktopVisibilityController desktopVisibilityController = + mActivityInterface.getDesktopVisibilityController(); + if (desktopVisibilityController != null) { // Notify the SysUI to stash desktop apps if they are visible - DesktopVisibilityController desktopVisibilityController = - mActivityInterface.getDesktopVisibilityController(); - if (desktopVisibilityController != null) { - desktopVisibilityController.onHomeActionTriggered(); - } + desktopVisibilityController.onHomeActionTriggered(); } break; case RECENTS: diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 24c99e323f..a3f6be032b 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -25,7 +25,6 @@ import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK; import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; @@ -109,19 +108,17 @@ public abstract class BaseActivityInterface 0) { - // Allocate +1 to account for a new task added to the desktop mode - int numHandles = visibleTasksCount + 1; - init(context, sizingStrategy, numHandles, true /* forDesktop */); - return; - } + DesktopVisibilityController desktopVisibilityController = + LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); + if (desktopVisibilityController != null) { + int visibleTasksCount = desktopVisibilityController.getVisibleFreeformTasksCount(); + if (visibleTasksCount > 0) { + // Allocate +1 to account for a new task added to the desktop mode + int numHandles = visibleTasksCount + 1; + init(context, sizingStrategy, numHandles, true /* forDesktop */); + return; } } diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index d8cbbf9d10..7510b67e07 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -35,7 +35,6 @@ import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_SINGLE_TASK import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_PENDINGINTENT; import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_SHORTCUT; import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_TASK; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import static com.android.wm.shell.common.split.SplitScreenConstants.KEY_EXTRA_WIDGET_INTENT; import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; @@ -968,7 +967,6 @@ public class SplitSelectStateController { @Override public boolean onRequestSplitSelect(ActivityManager.RunningTaskInfo taskInfo, int splitPosition, Rect taskBounds) { - if (!enableDesktopWindowingMode()) return false; MAIN_EXECUTOR.execute(() -> enterSplitSelect(taskInfo, splitPosition, taskBounds)); return true; diff --git a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java index 2282c46dfd..16d707bb10 100644 --- a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java +++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java @@ -17,7 +17,6 @@ package com.android.quickstep.util; import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -197,8 +196,6 @@ public class SplitToWorkspaceController { } private boolean shouldIgnoreSecondSplitLaunch() { - return (!FeatureFlags.enableSplitContextually() - && !enableDesktopWindowingMode()) - || !mController.isSplitSelectActive(); + return !FeatureFlags.enableSplitContextually() || !mController.isSplitSelectActive(); } } diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java index cd4fab64b2..0a3d2a0ac1 100644 --- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java @@ -26,7 +26,6 @@ import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK; import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT; import static com.android.launcher3.LauncherState.SPRING_LOADED; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SPLIT_SELECTION_EXIT_HOME; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import android.annotation.TargetApi; import android.content.Context; @@ -265,11 +264,11 @@ public class LauncherRecentsView extends RecentsView