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

Commit 6f55e4fb authored by minch's avatar minch
Browse files

Let RecentTasksController be a DesktopRepository.DeskChangeListener

Register RecentTasksController as a DeskChangeListener,
and `notifyRecentTasksChanged` on a desk addition and removal.

Launcher side change can be found at ag/33158727.

Bug: 401602554
Test: m
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Change-Id: Id89ac754514a325d8dbf95cabf0499a3c4d742cb
parent c41694f2
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -91,7 +91,8 @@ import java.util.stream.Collectors;
 */
public class RecentTasksController implements TaskStackListenerCallback,
        RemoteCallable<RecentTasksController>, DesktopRepository.ActiveTasksListener,
        TaskStackTransitionObserver.TaskStackTransitionObserverListener, UserChangeListener {
        TaskStackTransitionObserver.TaskStackTransitionObserverListener, UserChangeListener,
        DesktopRepository.DeskChangeListener {
    private static final String TAG = RecentTasksController.class.getSimpleName();

    // When the multiple desktops feature is disabled, all freeform tasks are lumped together into
@@ -203,8 +204,13 @@ public class RecentTasksController implements TaskStackListenerCallback,
        mShellCommandHandler.addCommandCallback("recents", mRecentsShellCommandHandler, this);
        mUserId = ActivityManager.getCurrentUser();
        mDesktopUserRepositories.ifPresent(
                desktopUserRepositories ->
                        desktopUserRepositories.getCurrent().addActiveTaskListener(this));
                desktopUserRepositories -> {
                    desktopUserRepositories.getCurrent().addActiveTaskListener(this);
                    if (mDesktopState.enableMultipleDesktops()) {
                        desktopUserRepositories.getCurrent().addDeskChangeListener(this,
                                mMainExecutor);
                    }
                });
        mTaskStackListener.addListener(this);
        mTaskStackTransitionObserver.addTaskStackTransitionObserverListener(this,
                mMainExecutor);
@@ -977,6 +983,26 @@ public class RecentTasksController implements TaskStackListenerCallback,
        currentUserRepository.addActiveTaskListener(this);
    }

    @Override
    public void onDeskAdded(int displayId, int deskId) {
        notifyRecentTasksChanged();
    }

    @Override
    public void onDeskRemoved(int displayId, int deskId) {
        notifyRecentTasksChanged();
    }

    @Override
    public void onActiveDeskChanged(int displayId, int newActiveDeskId, int oldActiveDeskId) {
        // No-op for now, as only desk additions/removals affect the recent tasks list directly.
    }

    @Override
    public void onCanCreateDesksChanged(boolean canCreateDesks) {
        // No-op for now.
    }

    /**
     * The interface for calls from outside the host process.
     */