diff --git a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java index 00a282ad90..a7e8118851 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java @@ -17,6 +17,7 @@ package com.android.launcher3.statehandlers; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.os.Debug; import android.os.SystemProperties; @@ -105,13 +106,6 @@ public class DesktopVisibilityController { SystemUiProxy.INSTANCE.get(mLauncher).setDesktopTaskListener(null); } - /** - * Whether desktop mode is supported. - */ - private boolean isDesktopModeSupported() { - return SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false); - } - /** * Whether freeform windows are visible in desktop mode. */ diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java index dda8446083..f58fd4547d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.taskbar; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; + import android.content.ComponentName; import android.content.pm.ActivityInfo; @@ -28,7 +30,6 @@ import com.android.quickstep.LauncherActivityInterface; import com.android.quickstep.RecentsModel; import com.android.quickstep.util.DesktopTask; import com.android.quickstep.util.GroupTask; -import com.android.quickstep.views.DesktopTaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; @@ -109,7 +110,7 @@ public final class KeyboardQuickSwitchController implements DesktopVisibilityController desktopController = LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); final boolean onDesktop = - DesktopTaskView.DESKTOP_MODE_SUPPORTED + isDesktopModeSupported() && desktopController != null && desktopController.areFreeformTasksVisible(); @@ -136,7 +137,7 @@ public final class KeyboardQuickSwitchController implements // Hide all desktop tasks and show them on the hidden tile int hiddenDesktopTasks = 0; - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { DesktopTask desktopTask = findDesktopTask(tasks); if (desktopTask != null) { hiddenDesktopTasks = desktopTask.tasks.size(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java index 533785f8ea..3f72e5d9d3 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java @@ -27,6 +27,7 @@ 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.quickstep.views.DesktopTaskView.isDesktopModeSupported; 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; @@ -52,7 +53,6 @@ import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; import com.android.quickstep.TouchInteractionService; import com.android.quickstep.util.AssistUtils; -import com.android.quickstep.views.DesktopTaskView; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -274,7 +274,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa private void navigateHome() { TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY); - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { DesktopVisibilityController desktopVisibilityController = LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); if (desktopVisibilityController != null) { diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 009b1bd286..a101c20c69 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -19,7 +19,6 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.os.Trace.TRACE_TAG_APP; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE; import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED; - import static com.android.app.animation.Interpolators.EMPHASIZED; import static com.android.launcher3.LauncherSettings.Animation.DEFAULT_NO_ICON; import static com.android.launcher3.LauncherSettings.Animation.VIEW_BACKGROUND; @@ -51,6 +50,7 @@ import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN; import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.quickstep.util.SplitAnimationTimings.TABLET_HOME_TO_SPLIT; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; @@ -164,7 +164,6 @@ import com.android.quickstep.util.SplitSelectStateController; import com.android.quickstep.util.SplitToWorkspaceController; import com.android.quickstep.util.SplitWithKeyboardShortcutController; import com.android.quickstep.util.TISBindHelper; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.FloatingTaskView; import com.android.quickstep.views.OverviewActionsView; import com.android.quickstep.views.RecentsView; @@ -246,7 +245,7 @@ public class QuickstepLauncher extends Launcher { getDepthController(), getStatsLogManager(), systemUiProxy, RecentsModel.INSTANCE.get(this), () -> onStateBack()); - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { mDesktopRecentsTransitionController = new DesktopRecentsTransitionController( getStateManager(), systemUiProxy, getIApplicationThread(), getDepthController()); @@ -272,7 +271,7 @@ public class QuickstepLauncher extends Launcher { mTISBindHelper = new TISBindHelper(this, this::onTISConnected); mDepthController = new DepthController(this); mDesktopVisibilityController = new DesktopVisibilityController(this); - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { mDesktopVisibilityController.registerSystemUiListener(); mSplitSelectStateController.initSplitFromDesktopController(this); } @@ -889,7 +888,7 @@ public class QuickstepLauncher extends Launcher { @Override public void setResumed() { - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { DesktopVisibilityController controller = mDesktopVisibilityController; if (controller != null && controller.areFreeformTasksVisible() && !controller.isRecentsGestureInProgress()) { diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java index e5787209d2..d11a08bff5 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java @@ -17,6 +17,7 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.content.Context; import android.graphics.Color; @@ -26,7 +27,6 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.quickstep.util.LayoutUtils; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.RecentsView; /** @@ -90,7 +90,7 @@ public class BackgroundAppState extends OverviewState { @Override protected float getDepthUnchecked(Context context) { - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { if (Launcher.getLauncher(context).areFreeformTasksVisible()) { // Don't blur the background while freeform tasks are visible return 0; diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java index 739246992c..ba44d6a795 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java @@ -16,6 +16,7 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.graphics.Color; @@ -23,7 +24,6 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.util.Themes; -import com.android.quickstep.views.DesktopTaskView; /** * State to indicate we are about to launch a recent task. Note that this state is only used when @@ -46,7 +46,7 @@ public class QuickSwitchState extends BackgroundAppState { @Override public int getWorkspaceScrimColor(Launcher launcher) { - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { if (launcher.areFreeformTasksVisible()) { // No scrim while freeform tasks are visible return Color.TRANSPARENT; diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java index 6f421eb14a..968faf07c7 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java @@ -16,7 +16,6 @@ package com.android.launcher3.uioverrides.touchcontrollers; import static android.view.MotionEvent.ACTION_DOWN; - import static com.android.app.animation.Interpolators.ACCELERATE_0_75; import static com.android.app.animation.Interpolators.DECELERATE_3; import static com.android.app.animation.Interpolators.LINEAR; @@ -49,6 +48,7 @@ import static com.android.launcher3.touch.BothAxesSwipeDetector.DIRECTION_UP; import static com.android.launcher3.util.NavigationMode.THREE_BUTTONS; import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC; import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; @@ -83,7 +83,6 @@ import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.LayoutUtils; import com.android.quickstep.util.MotionPauseDetector; import com.android.quickstep.util.WorkspaceRevealAnim; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.LauncherRecentsView; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; @@ -177,7 +176,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController, if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) { return false; } - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { // TODO(b/268075592): add support for quickswitch to/from desktop return false; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java index 9a35bb2ae7..ff142fe2ce 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java @@ -30,6 +30,7 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PR import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE; import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE; import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; @@ -48,7 +49,6 @@ import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.NavigationMode; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; @@ -79,7 +79,7 @@ public class QuickSwitchTouchController extends AbstractStateChangeTouchControll if ((ev.getEdgeFlags() & Utilities.EDGE_NAV_BAR) == 0) { return false; } - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { // TODO(b/268075592): add support for quickswitch to/from desktop return false; } diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 4dfa81dd4e..ccd83d2644 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -20,7 +20,6 @@ import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; import static android.widget.Toast.LENGTH_SHORT; - import static com.android.app.animation.Interpolators.ACCELERATE_DECELERATE; import static com.android.app.animation.Interpolators.DECELERATE; import static com.android.app.animation.Interpolators.OVERSHOOT_1_2; @@ -54,6 +53,7 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.INVALID_VELOCITY_ON_SWIPE_UP; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.LAUNCHER_DESTROYED; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.ON_SETTLED_ON_END_TARGET; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS; @@ -132,7 +132,6 @@ import com.android.quickstep.util.SurfaceTransaction; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.SwipePipToHomeAnimator; import com.android.quickstep.util.TaskViewSimulator; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.quickstep.views.TaskView.TaskIdAttributeContainer; @@ -936,7 +935,7 @@ public abstract class AbsSwipeUpHandler, public void onRecentsAnimationStart(RecentsAnimationController controller, RecentsAnimationTargets targets) { super.onRecentsAnimationStart(controller, targets); - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED && targets.hasDesktopTasks()) { + if (isDesktopModeSupported() && targets.hasDesktopTasks()) { mRemoteTargetHandles = mTargetGluer.assignTargetsForDesktop(targets); } else { int untrimmedAppCount = mRemoteTargetHandles.length; @@ -1162,7 +1161,7 @@ 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 (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { // Notify the SysUI to stash desktop apps if they are visible DesktopVisibilityController desktopVisibilityController = mActivityInterface.getDesktopVisibilityController(); @@ -1247,7 +1246,7 @@ public abstract class AbsSwipeUpHandler, return LAST_TASK; } - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED && endTarget == NEW_TASK) { + if (isDesktopModeSupported() && endTarget == NEW_TASK) { // TODO(b/268075592): add support for quickswitch to/from desktop return LAST_TASK; } diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 88933f416f..2dd6a29093 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -25,6 +25,7 @@ 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.quickstep.views.DesktopTaskView.isDesktopModeSupported; 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; @@ -65,7 +66,6 @@ import com.android.launcher3.util.NavigationMode; import com.android.launcher3.views.ScrimView; import com.android.quickstep.util.ActivityInitListener; import com.android.quickstep.util.AnimatorControllerWithResistance; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.recents.model.ThumbnailData; @@ -111,7 +111,7 @@ public abstract class BaseActivityInterface { systemUiProxy, RecentsModel.INSTANCE.get(this), null /*activityBackCallback*/); mDragLayer.recreateControllers(); - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { mDesktopRecentsTransitionController = new DesktopRecentsTransitionController( getStateManager(), systemUiProxy, getIApplicationThread(), null /* depthController */ diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java index 67c56e39eb..556dd7e81e 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java @@ -17,14 +17,13 @@ package com.android.quickstep; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.view.RemoteAnimationTarget.MODE_CLOSING; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.app.WindowConfiguration; import android.graphics.Rect; import android.os.Bundle; import android.view.RemoteAnimationTarget; -import com.android.quickstep.views.DesktopTaskView; - /** * Extension of {@link RemoteAnimationTargets} with additional information about swipe * up animation @@ -53,7 +52,7 @@ public class RecentsAnimationTargets extends RemoteAnimationTargets { * @return {@code true} if at least one target app is a desktop task */ public boolean hasDesktopTasks() { - if (!DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (!isDesktopModeSupported()) { return false; } for (RemoteAnimationTarget target : apps) { diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java index 3af5ab7583..98d0ece5a0 100644 --- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java +++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java @@ -17,6 +17,7 @@ package com.android.quickstep; import static com.android.quickstep.util.SplitScreenUtils.convertShellSplitBoundsToLauncher; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.wm.shell.util.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS; import android.content.Context; @@ -30,7 +31,6 @@ import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; -import com.android.quickstep.views.DesktopTaskView; import com.android.wm.shell.util.SplitBounds; import java.util.ArrayList; @@ -61,7 +61,7 @@ public class RemoteTargetGluer { * running tasks */ public RemoteTargetGluer(Context context, BaseActivityInterface sizingStrategy) { - if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (isDesktopModeSupported()) { // TODO(279931899): binder call, only for prototyping. Creating the gluer should be // postponed so we can create it when we have the remote animation targets ready. int desktopTasks = SystemUiProxy.INSTANCE.get(context).getVisibleDesktopTaskCount( diff --git a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java index e8adcabb46..96e39c4146 100644 --- a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java +++ b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java @@ -20,6 +20,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SYSTEM_SHORTCUT_FREE_FORM_TAP; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.app.Activity; import android.app.ActivityOptions; @@ -29,7 +30,6 @@ import android.graphics.Rect; import android.os.Handler; import android.os.Looper; import android.os.RemoteException; -import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import android.view.View; @@ -351,7 +351,7 @@ public interface TaskShortcutFactory { return Settings.Global.getInt( activity.getContentResolver(), Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0 - && !SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false); + && !isDesktopModeSupported(); } }; diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java index 819f249771..662a89506b 100644 --- a/quickstep/src/com/android/quickstep/TaskViewUtils.java +++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java @@ -39,7 +39,7 @@ import static com.android.launcher3.QuickstepTransitionManager.SPLIT_DIVIDER_ANI import static com.android.launcher3.QuickstepTransitionManager.SPLIT_LAUNCH_DURATION; import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor; import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE; -import static com.android.quickstep.views.DesktopTaskView.DESKTOP_MODE_SUPPORTED; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -185,7 +185,7 @@ public final class TaskViewUtils { // Re-use existing handles remoteTargetHandles = recentsViewHandles; } else { - boolean forDesktop = DESKTOP_MODE_SUPPORTED && v instanceof DesktopTaskView; + boolean forDesktop = isDesktopModeSupported() && v instanceof DesktopTaskView; RemoteTargetGluer gluer = new RemoteTargetGluer(v.getContext(), recentsView.getSizeStrategy(), targets, forDesktop); if (forDesktop) { diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index c873152210..145707bbfb 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -31,6 +31,7 @@ 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.quickstep.views.DesktopTaskView.isDesktopModeSupported; import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; import android.animation.Animator; @@ -91,7 +92,6 @@ import com.android.quickstep.SplitSelectionListener; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskAnimationManager; import com.android.quickstep.TaskViewUtils; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.FloatingTaskView; import com.android.quickstep.views.GroupedTaskView; import com.android.quickstep.views.RecentsView; @@ -814,7 +814,7 @@ public class SplitSelectStateController { @Override public boolean onRequestSplitSelect(ActivityManager.RunningTaskInfo taskInfo, int splitPosition, Rect taskBounds) { - if (!DesktopTaskView.DESKTOP_MODE_SUPPORTED) return false; + if (!isDesktopModeSupported()) 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 1b80388c1c..3748a24836 100644 --- a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java +++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java @@ -18,6 +18,7 @@ package com.android.quickstep.util; import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS; import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; +import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -44,7 +45,6 @@ import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.IconCache; import com.android.launcher3.model.data.PackageItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; -import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.FloatingTaskView; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; @@ -193,7 +193,7 @@ public class SplitToWorkspaceController { private boolean shouldIgnoreSecondSplitLaunch() { return (!ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get() && !FeatureFlags.enableSplitContextually() - && !DesktopTaskView.DESKTOP_MODE_SUPPORTED) + && !isDesktopModeSupported()) || !mController.isSplitSelectActive(); } } diff --git a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java index 9ff990e24a..a10d2ed47d 100644 --- a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java +++ b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java @@ -17,7 +17,6 @@ package com.android.quickstep.views; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED; import android.content.Context; @@ -52,6 +51,7 @@ import com.android.quickstep.util.RecentsOrientedState; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.QuickStepContract; +import com.android.wm.shell.Flags; import java.util.ArrayList; import java.util.Arrays; @@ -68,10 +68,11 @@ import kotlin.Unit; // TODO(b/249371338): TaskView needs to be refactored to have better support for N tasks. public class DesktopTaskView extends TaskView { - /** Flag to indicate whether desktop windowing proto 2 is enabled */ - public static final boolean DESKTOP_MODE_SUPPORTED = SystemProperties.getBoolean( + private static final boolean DESKTOP_MODE_SUPPORTED = SystemProperties.getBoolean( "persist.wm.debug.desktop_mode_2", false); + private static final boolean ENABLE_DESKTOP_WINDOWING = Flags.enableDesktopWindowing(); + private static final String TAG = DesktopTaskView.class.getSimpleName(); private static final boolean DEBUG = false; @@ -90,6 +91,17 @@ public class DesktopTaskView extends TaskView { private View mBackgroundView; + /** Check whether desktop windowing is enabled */ + public static boolean isDesktopModeSupported() { + // Check for aconfig flag first + if (ENABLE_DESKTOP_WINDOWING) { + return true; + } + // Fall back to sysprop flag + // TODO(b/304778354): remove sysprop once desktop aconfig flag supports dynamic overriding + return DESKTOP_MODE_SUPPORTED; + } + public DesktopTaskView(Context context) { this(context, null); } diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java index 7ff2de9bb0..a265146632 100644 --- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java @@ -25,6 +25,7 @@ import static com.android.launcher3.LauncherState.OVERVIEW; 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.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.annotation.TargetApi; import android.content.Context; @@ -255,7 +256,7 @@ public class LauncherRecentsView extends RecentsView private static final FloatProperty HOTSEAT_WIDGET_SCALE = HOTSEAT_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_WIDGET_TRANSITION); + private static final boolean ENABLE_DESKTOP_WINDOWING = Flags.enableDesktopWindowing(); private static final boolean DESKTOP_MODE_SUPPORTED = "1".equals(Utilities.getSystemProperty("persist.wm.debug.desktop_mode_2", "0")); @@ -3044,7 +3046,8 @@ public class Launcher extends StatefulActivity } private void updateDisallowBack() { - if (DESKTOP_MODE_SUPPORTED) { + // TODO(b/304778354): remove sysprop once desktop aconfig flag supports dynamic overriding + if (ENABLE_DESKTOP_WINDOWING || DESKTOP_MODE_SUPPORTED) { // Do not disable back in launcher when prototype behavior is enabled return; }