From f74d8b7264a20f80ef0e5af6b3cef0ad8a61fa50 Mon Sep 17 00:00:00 2001 From: Gustav Sennton Date: Tue, 30 Apr 2024 16:02:19 +0000 Subject: [PATCH] Re-fetch DesktopVisibilityController when needed instead of just once When creating DesktopTaskbarRunningAppsController the Quickstep Launcher might not be available, meaning we pass a null DesktopVisibilityController to DesktopTaskbarRunningAppsController. With this CL we refetch DesktopVisibilityController whenever needed. Bug: 338035946 Test: manual, and DesktopTaskbarRunningAppsControllerTest Flag: ACONFIG com.android.window.flags.Flags.enableDesktopWindowingTaskbarRunningApps DEVELOPMENT Change-Id: I8b806e2d0addbf8fb5ab6a3d419a4691c445f223 --- .../taskbar/DesktopTaskbarRunningAppsController.kt | 7 ++++++- .../android/launcher3/taskbar/TaskbarActivityContext.java | 2 +- .../taskbar/DesktopTaskbarRunningAppsControllerTest.kt | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsController.kt b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsController.kt index 81899135b6..3649c4ebc5 100644 --- a/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsController.kt @@ -40,12 +40,17 @@ import kotlin.collections.filterNotNull */ class DesktopTaskbarRunningAppsController( private val recentsModel: RecentsModel, - private val desktopVisibilityController: DesktopVisibilityController?, + // Pass a provider here instead of the actual DesktopVisibilityController instance since that + // instance might not be available when this constructor is called. + private val desktopVisibilityControllerProvider: () -> DesktopVisibilityController?, ) : TaskbarRecentAppsController() { private var apps: Array? = null private var allRunningDesktopAppInfos: List? = null + private val desktopVisibilityController: DesktopVisibilityController? + get() = desktopVisibilityControllerProvider() + private val isInDesktopMode: Boolean get() = desktopVisibilityController?.areDesktopTasksVisible() ?: false diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index ff76e21faf..1d772b5479 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -312,7 +312,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (enableDesktopWindowingMode() && enableDesktopWindowingTaskbarRunningApps()) { return new DesktopTaskbarRunningAppsController( RecentsModel.INSTANCE.get(this), - LauncherActivityInterface.INSTANCE.getDesktopVisibilityController()); + LauncherActivityInterface.INSTANCE::getDesktopVisibilityController); } return TaskbarRecentAppsController.DEFAULT; } diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsControllerTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsControllerTest.kt index daed861b09..4fafde8e80 100644 --- a/quickstep/tests/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsControllerTest.kt +++ b/quickstep/tests/src/com/android/launcher3/taskbar/DesktopTaskbarRunningAppsControllerTest.kt @@ -54,7 +54,9 @@ class DesktopTaskbarRunningAppsControllerTest : TaskbarBaseTestCase() { super.setup() userHandle = Process.myUserHandle() taskbarRunningAppsController = - DesktopTaskbarRunningAppsController(mockRecentsModel, mockDesktopVisibilityController) + DesktopTaskbarRunningAppsController(mockRecentsModel) { + mockDesktopVisibilityController + } taskbarRunningAppsController.init(taskbarControllers) taskbarRunningAppsController.setApps( ALL_APP_PACKAGES.map { createTestAppInfo(packageName = it) }.toTypedArray()