Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f74d8b72 authored by Gustav Sennton's avatar Gustav Sennton
Browse files

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
parent 0eaf9ebd
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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<AppInfo>? = null
    private var allRunningDesktopAppInfos: List<AppInfo>? = null

    private val desktopVisibilityController: DesktopVisibilityController?
        get() = desktopVisibilityControllerProvider()

    private val isInDesktopMode: Boolean
        get() = desktopVisibilityController?.areDesktopTasksVisible() ?: false

+1 −1
Original line number Diff line number Diff line
@@ -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;
    }
+3 −1
Original line number Diff line number Diff line
@@ -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()