From 2cf0d817a36de48c05f97dd83d0500b8aac3e866 Mon Sep 17 00:00:00 2001 From: Toni Barzic Date: Sat, 3 May 2025 23:04:22 +0000 Subject: [PATCH] Use desktop mode autostashing on desktop devices Updates few autostashing related conditions to use `isTaskbarShowingDesktopApps()` instead of `isInDesktopMode()`, as the former covers the case where the desktop flavour taskbar is shown consistently (on desktop devices). Bug: 390665752 Bug: 415991381 Flag: com.android.window.flags.enable_desktop_taskbar_on_freeform_displays Test: On desktop device, verify that "Always show taskbar" is shown on home/in overview/in app outside desktop mode, and verify that the popup value shown is consistent with the value in desktop mode. Verify that taskbar does not get auto-stashed on home, even if "Always show Taskbar" value is false. Change-Id: I4edfe20f5526210fdf767231d0906875fe04f806 --- .../taskbar/TaskbarDividerPopupView.kt | 2 +- .../taskbar/TaskbarPinningController.kt | 2 +- .../taskbar/TaskbarStashController.java | 10 ++++++---- .../taskbar/TaskbarStashControllerTest.kt | 17 +++++++++++++++++ .../controllers/TaskbarPinningControllerTest.kt | 13 +++++++++++++ 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt index 280a945909..7f6185dab3 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt @@ -83,7 +83,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 resources.getDimension(R.dimen.taskbar_pinning_popup_menu_min_padding_from_screen_edge) private var alwaysShowTaskbarOn = - if (taskbarActivityContext.isInDesktopMode) { + if (taskbarActivityContext.isTaskbarShowingDesktopTasks) { LauncherPrefs.TASKBAR_PINNING_IN_DESKTOP_MODE.get(context) } else { !taskbarActivityContext.isTransientTaskbar diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPinningController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarPinningController.kt index 5ee8eda742..8d75eef314 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPinningController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPinningController.kt @@ -60,7 +60,7 @@ class TaskbarPinningController(private val context: TaskbarActivityContext) : } if ( - controllers.taskbarDesktopModeController.isInDesktopModeAndNotInOverview( + controllers.taskbarDesktopModeController.shouldShowDesktopTasksInTaskbar( context.displayId ) ) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index bcc1ef8000..1abcaa093a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -653,11 +653,13 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * @return if we should allow taskbar to auto stash */ public boolean shouldAllowTaskbarToAutoStash() { - boolean isTransientTaskbar = mActivity.isTransientTaskbar(); - boolean isInDesktop = mActivity.isInDesktopMode(); + if (mActivity.isTransientTaskbar()) { + return true; + } + boolean isTaskbarPinningOnInDesktopMode = LauncherPrefs.TASKBAR_PINNING_IN_DESKTOP_MODE.get( mActivity); - return isTransientTaskbar || (isInDesktop && !isTaskbarPinningOnInDesktopMode); + return !isTaskbarPinningOnInDesktopMode && mActivity.isTaskbarShowingDesktopTasks(); } /** @@ -688,7 +690,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } if (mActivity.isTransientTaskbar()) { updateAndAnimateTransientTaskbar(!hasAnyFlag(FLAG_STASHED_IN_APP_AUTO)); - } else if (mActivity.isInDesktopMode()) { + } else if (mActivity.isTaskbarShowingDesktopTasks()) { updateAndAnimatePinnedTaskbar(!hasAnyFlag(FLAG_STASHED_IN_APP_AUTO)); } } diff --git a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarStashControllerTest.kt b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarStashControllerTest.kt index 16555085cf..30a8931e21 100644 --- a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarStashControllerTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarStashControllerTest.kt @@ -412,6 +412,23 @@ class TaskbarStashControllerTest { assertThat(stashController.timeoutAlarm.alarmPending()).isFalse() } + @Test + @TaskbarMode(TRANSIENT) + fun shouldAllowTaskbarToAutoStash_transientTaskbar() { + assertThat(stashController.shouldAllowTaskbarToAutoStash()).isTrue() + } + + @Test + @TaskbarMode(PINNED) + fun toggleTaskbarStash_autoStashedDesktopModeTaskbar() { + LauncherPrefs.get(context).put(TASKBAR_PINNING_IN_DESKTOP_MODE, false) + whenever(desktopVisibilityController.isInDesktopMode(context.displayId)).thenReturn(true) + + getInstrumentation().runOnMainSync { stashController.toggleTaskbarStash() } + + assertThat(stashController.isStashed).isTrue() + } + @Test @TaskbarMode(TRANSIENT) fun testUpdateAndAnimateTransientTaskbar_finishTaskbarTimeout_taskbarStashes() { diff --git a/quickstep/tests/multivalentTests/src/com/android/quickstep/taskbar/controllers/TaskbarPinningControllerTest.kt b/quickstep/tests/multivalentTests/src/com/android/quickstep/taskbar/controllers/TaskbarPinningControllerTest.kt index f285a86444..f95d2f7d22 100644 --- a/quickstep/tests/multivalentTests/src/com/android/quickstep/taskbar/controllers/TaskbarPinningControllerTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/quickstep/taskbar/controllers/TaskbarPinningControllerTest.kt @@ -76,6 +76,19 @@ class TaskbarPinningControllerTest : TaskbarBaseTestCase() { ) ) .thenAnswer { _ -> isInDesktopMode } + whenever( + taskbarControllers.taskbarDesktopModeController.isInDesktopMode( + taskbarActivityContext.displayId + ) + ) + .thenAnswer { _ -> isInDesktopMode } + whenever( + taskbarControllers.taskbarDesktopModeController.shouldShowDesktopTasksInTaskbar( + taskbarActivityContext.displayId + ) + ) + .thenAnswer { _ -> isInDesktopMode } + pinningController = spy(TaskbarPinningController(taskbarActivityContext)) pinningController.init(taskbarControllers, taskbarSharedState) }