From 83ffb6e6bda5cee13d3129fc50e0f22953a0929b Mon Sep 17 00:00:00 2001 From: Toni Barzic Date: Thu, 5 Jun 2025 22:29:55 +0000 Subject: [PATCH] Don't show tasks shown in taskbar within overflow UI Bug: 404753077 Flag: com.android.window.flags.enable_taskbar_overflow Test: Verify that taskbar overflow bubble view only shows tasks not visible in taskbar. Change-Id: Ie04f79c91b524bbc592309ef62723d428e78f304 --- .../launcher3/taskbar/TaskbarManagerImpl.java | 2 +- .../taskbar/TaskbarViewCallbacks.java | 2 +- .../taskbar/TaskbarViewController.java | 18 +++++++++++------- .../launcher3/taskbar/TaskbarOverflowTest.kt | 11 +++++++---- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManagerImpl.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManagerImpl.java index a7fd9e22ed..a13f5f96b8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManagerImpl.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManagerImpl.java @@ -293,7 +293,7 @@ public class TaskbarManagerImpl implements DisplayDecorationListener { // get pinned tasks - we care about all tasks, not just the one moved to the front Set taskbarPinnedTasks = entry.getValue().getControllers().taskbarViewController - .getTaskIdsForPinnedApps(); + .getShownTaskIds(); // filter out tasks already marked as perceptible taskbarPinnedTasks.removeAll(mPerceptibleTasks); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java index ad5770d8c9..59707f50d8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java @@ -203,7 +203,7 @@ public class TaskbarViewCallbacks { mTaskbarView.getTaskbarOverflowView().getIsActive()); } mControllers.keyboardQuickSwitchController.toggleQuickSwitchViewForTaskbar( - mControllers.taskbarViewController.getTaskIdsForPinnedApps(), + mControllers.taskbarViewController.getShownTaskIds(), this::onKeyboardQuickSwitchViewClosed); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index f5e6f14da7..1a2a977c11 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -781,21 +781,25 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } /** - * @return A set of Task ids of running apps that are pinned in the taskbar. + * @return A set of Task ids shown in the taskbar - includes task ID for running tasks of pinned + * apps, and standalone running tasks. */ - protected Set getTaskIdsForPinnedApps() { + protected Set getShownTaskIds() { if (!ENABLE_TASKBAR_OVERFLOW.isTrue()) { return Collections.emptySet(); } - Set pinnedAppsWithTasks = new HashSet<>(); + Set shownTasks = new HashSet<>(); for (View iconView : getIconViews()) { - if (iconView instanceof BubbleTextView btv - && btv.getTag() instanceof TaskItemInfo itemInfo) { - pinnedAppsWithTasks.add(itemInfo.getTaskId()); + if (iconView instanceof BubbleTextView btv) { + if (btv.getTag() instanceof TaskItemInfo itemInfo) { + shownTasks.add(itemInfo.getTaskId()); + } else if (btv.getTag() instanceof SingleTask task) { + shownTasks.add(task.getTask().getKey().id); + } } } - return pinnedAppsWithTasks; + return shownTasks; } private void updateRunningState(BubbleTextView btv) { diff --git a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarOverflowTest.kt b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarOverflowTest.kt index 7485b3080b..f4b1521649 100644 --- a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarOverflowTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarOverflowTest.kt @@ -378,7 +378,7 @@ class TaskbarOverflowTest { assertThat(getOnUiThread { keyboardQuickSwitchController.isShownFromTaskbar }).isTrue() assertThat(getOnUiThread { keyboardQuickSwitchController.shownTaskIds() }) - .containsExactlyElementsIn(0..