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

Commit df1a141e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Restore all user visible tasks on user switch." into main

parents e46f40f3 cb1c539c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1941,7 +1941,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
        if (Flags.enableTopVisibleRootTaskPerUserTracking()) {
            final IntArray visibleRootTasks = new IntArray();
            forAllRootTasks(rootTask -> {
                if (mCurrentUser == rootTask.mUserId && rootTask.isVisibleRequested()) {
                if ((mCurrentUser == rootTask.mUserId || rootTask.showForAllUsers())
                        && rootTask.isVisible()) {
                    visibleRootTasks.add(rootTask.getRootTaskId());
                }
            }, /* traverseTopToBottom */ false);
@@ -2045,6 +2046,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent>

            if (Flags.enableTopVisibleRootTaskPerUserTracking()) {
                final IntArray rootTasks = mUserVisibleRootTasks.get(userId, new IntArray());
                // If root task already exists in the list, move it to the top instead.
                final int rootTaskIndex = rootTasks.indexOf(rootTask.getRootTaskId());
                if (rootTaskIndex != -1) {
                    rootTasks.remove(rootTaskIndex);
                }
                rootTasks.add(rootTask.getRootTaskId());
                mUserVisibleRootTasks.put(userId, rootTasks);
            } else {
+10 −4
Original line number Diff line number Diff line
@@ -1348,13 +1348,19 @@ public class RootWindowContainerTests extends WindowTestsBase {
                WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD, true /* onTop */);
        doReturn(rootTask3).when(mRootWindowContainer).getTopDisplayFocusedRootTask();

        // Set up user ids and visibility
        // Set up child tasks inside root tasks and set some of them visible
        final Task task1 = new TaskBuilder(mSupervisor).setOnTop(true).setParentTask(
                rootTask1).build();
        final Task task2 = new TaskBuilder(mSupervisor).setOnTop(true).setParentTask(
                rootTask2).build();
        final Task task3 = new TaskBuilder(mSupervisor).setOnTop(true).setParentTask(
                rootTask3).build();
        rootTask1.mUserId = mRootWindowContainer.mCurrentUser;
        rootTask2.mUserId = mRootWindowContainer.mCurrentUser;
        rootTask3.mUserId = mRootWindowContainer.mCurrentUser;
        rootTask1.mVisibleRequested = false;
        rootTask2.mVisibleRequested = true;
        rootTask3.mVisibleRequested = true;
        doReturn(false).when(task1).isVisible();
        doReturn(true).when(task2).isVisible();
        doReturn(true).when(task3).isVisible();

        // Switch to a different user
        int currentUser = mRootWindowContainer.mCurrentUser;