From 3835f9323722a3ff901cd9cadeca096f9de427ab Mon Sep 17 00:00:00 2001 From: Alina Zaidi Date: Mon, 22 Jul 2024 16:30:28 +0000 Subject: [PATCH] [Dev options][DW flag] Update all usage of enable_desktop_windowing_mode flag to use DesktopModeFlags Test: Current tests pass Bug: 348193756 Flag: com.android.window.flags.show_desktop_windowing_dev_option Change-Id: I96107f7c2964ee8261ad0a161163491d6f7d4d39 --- .../taskbar/TaskbarActivityContext.java | 1 + .../taskbar/TaskbarRecentAppsController.kt | 6 ++++-- .../uioverrides/QuickstepLauncher.java | 10 ++++----- .../android/quickstep/AbsSwipeUpHandler.java | 13 ++++++------ .../android/quickstep/RecentTasksList.java | 14 ++++++++----- .../android/quickstep/RecentsActivity.java | 4 ++-- .../quickstep/RecentsAnimationTargets.java | 7 ++++--- .../com/android/quickstep/RecentsModel.java | 4 +++- .../com/android/quickstep/SystemUiProxy.java | 5 +++-- .../android/quickstep/views/RecentsView.java | 2 +- .../TaskbarRecentAppsControllerTest.kt | 6 +++++- .../quickstep/RecentTasksListTest.java | 21 +++++++++++-------- 12 files changed, 56 insertions(+), 37 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 30482436fd..800c594604 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -315,6 +315,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { new TaskbarTranslationController(this), new TaskbarSpringOnStashController(this), new TaskbarRecentAppsController( + this, RecentsModel.INSTANCE.get(this), LauncherActivityInterface.INSTANCE::getDesktopVisibilityController), TaskbarEduTooltipController.newInstance(this), diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.kt index 5c081163cc..2cb950c7e9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.kt @@ -15,6 +15,7 @@ */ package com.android.launcher3.taskbar +import android.content.Context import androidx.annotation.VisibleForTesting import com.android.launcher3.Flags.enableRecentsInTaskbar import com.android.launcher3.model.data.ItemInfo @@ -26,8 +27,8 @@ import com.android.launcher3.util.CancellableTask import com.android.quickstep.RecentsModel import com.android.quickstep.util.DesktopTask import com.android.quickstep.util.GroupTask -import com.android.window.flags.Flags.enableDesktopWindowingMode import com.android.window.flags.Flags.enableDesktopWindowingTaskbarRunningApps +import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE import java.io.PrintWriter /** @@ -36,6 +37,7 @@ import java.io.PrintWriter * - When in Desktop Mode: show the currently running (open) Tasks */ class TaskbarRecentAppsController( + context: Context, private val recentsModel: RecentsModel, // Pass a provider here instead of the actual DesktopVisibilityController instance since that // instance might not be available when this constructor is called. @@ -44,7 +46,7 @@ class TaskbarRecentAppsController( // TODO(b/335401172): unify DesktopMode checks in Launcher. var canShowRunningApps = - enableDesktopWindowingMode() && enableDesktopWindowingTaskbarRunningApps() + DESKTOP_WINDOWING_MODE.isEnabled(context) && enableDesktopWindowingTaskbarRunningApps() @VisibleForTesting set(isEnabledFromTest) { field = isEnabledFromTest diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index be6f69069d..7ee6f724d0 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -65,9 +65,9 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent import static com.android.quickstep.util.AnimUtils.completeRunnableListCallback; import static com.android.quickstep.util.SplitAnimationTimings.TABLET_HOME_TO_SPLIT; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; +import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -201,6 +201,8 @@ import com.android.systemui.unfold.dagger.UnfoldMain; import com.android.systemui.unfold.progress.RemoteUnfoldTransitionReceiver; import com.android.systemui.unfold.updates.RotationChangeProvider; +import kotlin.Unit; + import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; @@ -213,8 +215,6 @@ import java.util.function.BiConsumer; import java.util.function.Predicate; import java.util.stream.Stream; -import kotlin.Unit; - public class QuickstepLauncher extends Launcher implements RecentsViewContainer { private static final boolean TRACE_LAYOUTS = SystemProperties.getBoolean("persist.debug.trace_layouts", false); @@ -276,7 +276,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer // TODO(b/337863494): Explore use of the same OverviewComponentObserver across launcher OverviewComponentObserver overviewComponentObserver = new OverviewComponentObserver( asContext(), deviceState); - if (enableDesktopWindowingMode()) { + if (DESKTOP_WINDOWING_MODE.isEnabled(this)) { mDesktopRecentsTransitionController = new DesktopRecentsTransitionController( getStateManager(), systemUiProxy, getIApplicationThread(), getDepthController()); @@ -296,7 +296,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer mTISBindHelper = new TISBindHelper(this, this::onTISConnected); mDepthController = new DepthController(this); - if (enableDesktopWindowingMode()) { + if (DESKTOP_WINDOWING_MODE.isEnabled(this)) { mDesktopVisibilityController = new DesktopVisibilityController(this); mDesktopVisibilityController.registerSystemUiListener(); mSplitSelectStateController.initSplitFromDesktopController(this, diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 20eaddc6f9..45f6b64b05 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -62,6 +62,7 @@ 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.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -152,6 +153,8 @@ import com.android.window.flags.Flags; import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.startingsurface.SplashScreenExitAnimationUtils; +import kotlin.Unit; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -161,8 +164,6 @@ import java.util.Optional; import java.util.OptionalInt; import java.util.function.Consumer; -import kotlin.Unit; - /** * Handles the navigation gestures when Launcher is the default home activity. */ @@ -952,7 +953,7 @@ public abstract class AbsSwipeUpHandler mRunningTasks; - public RecentTasksList(LooperExecutor mainThreadExecutor, KeyguardManager keyguardManager, - SystemUiProxy sysUiProxy, TopTaskTracker topTaskTracker) { + public RecentTasksList(Context context, LooperExecutor mainThreadExecutor, + KeyguardManager keyguardManager, SystemUiProxy sysUiProxy, + TopTaskTracker topTaskTracker) { + mContext = context; mMainThreadExecutor = mainThreadExecutor; mKeyguardManager = keyguardManager; mChangeId = 1; @@ -325,9 +329,9 @@ public class RecentTasksList { int numVisibleTasks = 0; for (GroupedRecentTaskInfo rawTask : rawTasks) { if (rawTask.getType() == TYPE_FREEFORM) { - // TYPE_FREEFORM tasks is only created when enableDesktopWindowingMode() is true, + // TYPE_FREEFORM tasks is only created whenDESKTOP_WINDOWING_MODE.isEnabled is true, // leftover TYPE_FREEFORM tasks created when flag was on should be ignored. - if (enableDesktopWindowingMode()) { + if (DESKTOP_WINDOWING_MODE.isEnabled(mContext)) { GroupTask desktopTask = createDesktopTask(rawTask); if (desktopTask != null) { allTasks.add(desktopTask); diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java index 18461a6440..e84200d1d5 100644 --- a/quickstep/src/com/android/quickstep/RecentsActivity.java +++ b/quickstep/src/com/android/quickstep/RecentsActivity.java @@ -27,7 +27,7 @@ import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_O import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely; import static com.android.quickstep.TaskUtils.taskIsATargetWithMode; import static com.android.quickstep.TaskViewUtils.createRecentsWindowAnimator; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; +import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -147,7 +147,7 @@ public final class RecentsActivity extends StatefulActivity implem mActionsView = findViewById(R.id.overview_actions_view); getRootView().getSysUiScrim().getSysUIProgress().updateValue(0); mDragLayer.recreateControllers(); - if (enableDesktopWindowingMode()) { + if (DESKTOP_WINDOWING_MODE.isEnabled(this)) { 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 82bb453807..d104911915 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java @@ -18,9 +18,10 @@ package com.android.quickstep; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.view.RemoteAnimationTarget.MODE_CLOSING; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; +import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE; import android.app.WindowConfiguration; +import android.content.Context; import android.graphics.Rect; import android.os.Bundle; import android.view.RemoteAnimationTarget; @@ -54,8 +55,8 @@ public class RecentsAnimationTargets extends RemoteAnimationTargets { * * @return {@code true} if at least one target app is a desktop task */ - public boolean hasDesktopTasks() { - if (!enableDesktopWindowingMode()) { + public boolean hasDesktopTasks(Context context) { + if (!DESKTOP_WINDOWING_MODE.isEnabled(context)) { return false; } for (RemoteAnimationTarget target : apps) { diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java index f2b6005a4a..db03dac608 100644 --- a/quickstep/src/com/android/quickstep/RecentsModel.java +++ b/quickstep/src/com/android/quickstep/RecentsModel.java @@ -90,7 +90,9 @@ public class RecentsModel implements RecentTasksDataSource, IconChangeListener, private RecentsModel(Context context, IconProvider iconProvider) { this(context, - new RecentTasksList(MAIN_EXECUTOR, + new RecentTasksList( + context, + MAIN_EXECUTOR, context.getSystemService(KeyguardManager.class), SystemUiProxy.INSTANCE.get(context), TopTaskTracker.INSTANCE.get(context)), diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index 3f73959254..f2db5af0f8 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -23,8 +23,8 @@ import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.SplitConfigurationOptions.StagePosition; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.RECENT_TASKS_MISSING; import static com.android.quickstep.util.LogUtils.splitFailureMessage; -import static com.android.window.flags.Flags.enableDesktopWindowingMode; import static com.android.window.flags.Flags.enableDesktopWindowingTaskbarRunningApps; +import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE; import android.app.ActivityManager; import android.app.ActivityOptions; @@ -1444,7 +1444,8 @@ public class SystemUiProxy implements ISystemUiProxy, NavHandle, SafeCloseable { private boolean shouldEnableRunningTasksForDesktopMode() { // TODO(b/335401172): unify DesktopMode checks in Launcher - return enableDesktopWindowingMode() && enableDesktopWindowingTaskbarRunningApps(); + return DESKTOP_WINDOWING_MODE.isEnabled(mContext) + && enableDesktopWindowingTaskbarRunningApps(); } private boolean handleMessageAsync(Message msg) { diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index a3d635914e..d63ac56691 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -5498,7 +5498,7 @@ public abstract class RecentsView(Collections.singletonList(recentTaskInfos))); List taskList = mRecentTasksList.loadTasksInBackground(Integer.MAX_VALUE, -1, @@ -94,7 +97,7 @@ public class RecentTasksListTest { @Test public void loadTasksInBackground_GetRecentTasksException() throws Exception { - when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt())) + when(mSystemUiProxy.getRecentTasks(anyInt(), anyInt())) .thenThrow(new SystemUiProxy.GetRecentTasksException("task load failed")); RecentTasksList.TaskLoadResult taskList = mRecentTasksList.loadTasksInBackground( @@ -113,7 +116,7 @@ public class RecentTasksListTest { task2.taskDescription = new ActivityManager.TaskDescription(); GroupedRecentTaskInfo recentTaskInfos = GroupedRecentTaskInfo.forSplitTasks(task1, task2, null); - when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt())) + when(mSystemUiProxy.getRecentTasks(anyInt(), anyInt())) .thenReturn(new ArrayList<>(Collections.singletonList(recentTaskInfos))); List taskList = mRecentTasksList.loadTasksInBackground(Integer.MAX_VALUE, -1, @@ -132,7 +135,7 @@ public class RecentTasksListTest { createRecentTaskInfo(5 /* taskId */)}; GroupedRecentTaskInfo recentTaskInfos = GroupedRecentTaskInfo.forFreeformTasks( tasks, Collections.emptySet() /* minimizedTaskIds */); - when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt())) + when(mSystemUiProxy.getRecentTasks(anyInt(), anyInt())) .thenReturn(new ArrayList<>(Collections.singletonList(recentTaskInfos))); List taskList = mRecentTasksList.loadTasksInBackground( @@ -158,7 +161,7 @@ public class RecentTasksListTest { Arrays.stream(new Integer[]{1, 4, 5}).collect(Collectors.toSet()); GroupedRecentTaskInfo recentTaskInfos = GroupedRecentTaskInfo.forFreeformTasks(tasks, minimizedTaskIds); - when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt())) + when(mSystemUiProxy.getRecentTasks(anyInt(), anyInt())) .thenReturn(new ArrayList<>(Collections.singletonList(recentTaskInfos))); List taskList = mRecentTasksList.loadTasksInBackground(