From c86d27deec6bb1490c26f67b9c33c7373079757d Mon Sep 17 00:00:00 2001 From: Ajinkya Chalke Date: Tue, 8 Apr 2025 11:22:39 +0000 Subject: [PATCH] Use DesktopModeFlags for Alt+Tab CD flags - Updated flags for both Alt+Tab on CD and KQS flatenning features. Bug: 407954660 Test: m Flag: EXEMPT only updated flag usage Change-Id: If099138c65ae582837293c0929185f61e6f5f350 --- .../KeyboardQuickSwitchController.java | 8 ++--- .../taskbar/KeyboardQuickSwitchView.java | 5 +-- .../KeyboardQuickSwitchViewController.java | 3 +- .../taskbar/TaskbarDesktopModeFlags.kt | 32 +++++++++++++++++++ .../quickstep/TouchInteractionService.java | 5 +-- 5 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeFlags.kt diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java index 6bd1d758a6..09d7ff725d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java @@ -15,8 +15,8 @@ */ package com.android.launcher3.taskbar; -import static com.android.launcher3.Flags.enableAltTabKqsFlatenning; -import static com.android.launcher3.Flags.enableAltTabKqsOnConnectedDisplays; +import static com.android.launcher3.taskbar.TaskbarDesktopModeFlags.enableAltTabKqsFlatenning; +import static com.android.launcher3.taskbar.TaskbarDesktopModeFlags.enableAltTabKqsOnConnectedDisplays; import android.app.ActivityManager; import android.content.ComponentName; @@ -246,7 +246,7 @@ public final class KeyboardQuickSwitchController implements mHasDesktopTask = false; mWasDesktopTaskFilteredOut = false; - if (enableAltTabKqsFlatenning()) { + if (enableAltTabKqsFlatenning.isTrue()) { processLoadedTasksCombined(tasks, taskIdsToExclude); } else if (mControllers.taskbarDesktopModeController.shouldShowDesktopTasksInTaskbar()) { processLoadedTasksOnDesktop(tasks, taskIdsToExclude); @@ -313,7 +313,7 @@ public final class KeyboardQuickSwitchController implements // multiple desktops flag disabled. So, until multiple desktops is implemented the following // should help with team-fooding Alt+tab on connected displays. Post multiple desktop, // further changes maybe required to support launching selected desktops. - if (enableAltTabKqsOnConnectedDisplays()) { + if (enableAltTabKqsOnConnectedDisplays.isTrue()) { mTasks = desktopTasks.stream() .flatMap(t -> t.getTasks().stream()) .map(SingleTask::new) diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java index fe93a26b94..d69830a8b9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java @@ -17,6 +17,8 @@ package com.android.launcher3.taskbar; import static androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID; +import static com.android.launcher3.taskbar.TaskbarDesktopModeFlags.enableAltTabKqsFlatenning; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -47,7 +49,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.android.app.animation.Interpolators; import com.android.internal.jank.Cuj; -import com.android.launcher3.Flags; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; @@ -287,7 +288,7 @@ public class KeyboardQuickSwitchView extends ConstraintLayout { } else if (groupTask instanceof SingleTask singleTask) { task1 = singleTask.getTask(); task2 = null; - } else if (Flags.enableAltTabKqsFlatenning() + } else if (enableAltTabKqsFlatenning.isTrue() && groupTask instanceof DesktopTask desktopTask) { task1 = desktopTask.getTasks().get(0); task2 = null; diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java index 36317e358e..b537660bc7 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java @@ -16,6 +16,7 @@ package com.android.launcher3.taskbar; import static com.android.launcher3.desktop.DesktopAppLaunchTransition.AppLaunchType.UNMINIMIZE; +import static com.android.launcher3.taskbar.TaskbarDesktopModeFlags.enableAltTabKqsFlatenning; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; @@ -283,7 +284,7 @@ public class KeyboardQuickSwitchViewController { return -1; } - if (Flags.enableAltTabKqsFlatenning() + if (enableAltTabKqsFlatenning.isTrue() && tryLaunchingCombinedTask(task, slideInTransition, systemUiProxy)) { return -1; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeFlags.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeFlags.kt new file mode 100644 index 0000000000..870a2ca8f6 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDesktopModeFlags.kt @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.taskbar + +import android.window.DesktopModeFlags.DesktopModeFlag +import com.android.launcher3.Flags + +class TaskbarDesktopModeFlags { + companion object { + @JvmField + val enableAltTabKqsOnConnectedDisplays: DesktopModeFlag = + DesktopModeFlag(Flags::enableAltTabKqsOnConnectedDisplays, false) + + @JvmField + val enableAltTabKqsFlatenning: DesktopModeFlag = + DesktopModeFlag(Flags::enableAltTabKqsFlatenning, false) + } +} diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 226eeed4a7..dcfd99e63f 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -28,6 +28,7 @@ import static com.android.launcher3.Flags.enableHandleDelayedGestureCallbacks; import static com.android.launcher3.LauncherPrefs.backedUpItem; import static com.android.launcher3.MotionEventsUtils.isTrackpadMotionEvent; import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; +import static com.android.launcher3.taskbar.TaskbarDesktopModeFlags.enableAltTabKqsOnConnectedDisplays; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.OnboardingPrefs.HOME_BOUNCE_SEEN; @@ -236,7 +237,7 @@ public class TouchInteractionService extends Service { executeForTouchInteractionService(tis -> { if (triggeredFromAltTab) { TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS); - int displayId = Flags.enableAltTabKqsOnConnectedDisplays() + int displayId = enableAltTabKqsOnConnectedDisplays.isTrue() ? SystemUiProxy.INSTANCE.get(tis).getFocusState().getFocusedDisplayId() : DEFAULT_DISPLAY; tis.mOverviewCommandHelper.addCommand(CommandType.KEYBOARD_INPUT, displayId); @@ -252,7 +253,7 @@ public class TouchInteractionService extends Service { executeForTouchInteractionService(tis -> { if (triggeredFromAltTab && !triggeredFromHomeKey) { // onOverviewShownFromAltTab hides the overview and ends at the target app - int displayId = Flags.enableAltTabKqsOnConnectedDisplays() + int displayId = enableAltTabKqsOnConnectedDisplays.isTrue() ? SystemUiProxy.INSTANCE.get(tis).getFocusState().getFocusedDisplayId() : DEFAULT_DISPLAY; tis.mOverviewCommandHelper.addCommand(CommandType.HIDE, displayId);