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

Commit 76b36c3a authored by Pragya Bajoria's avatar Pragya Bajoria Committed by Android (Google) Code Review
Browse files

Merge "Handle state management of repository state to remove freeform windows...

Merge "Handle state management of repository state to remove freeform windows without requiring the caller to know the right order of methods to call." into main
parents 04ccd1b4 604bd2b7
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -300,13 +300,17 @@ class DesktopModeTaskRepository {
        }
    }

    /** Removes given task from a valid [displayId]. */
    /** Removes given task from a valid [displayId] and updates the repository state. */
    private fun removeTaskFromDisplay(displayId: Int, taskId: Int) {
        logD("Removes freeform task: taskId=%d, displayId=%d", taskId, displayId)
        desktopTaskDataByDisplayId[displayId]?.freeformTasksInZOrder?.remove(taskId)
        boundsBeforeMaximizeByTaskId.remove(taskId)
        logD("Remaining freeform tasks: %s",
            desktopTaskDataByDisplayId[displayId]?.freeformTasksInZOrder?.toDumpString())
        // Remove task from unminimized task if it is minimized.
        unminimizeTask(displayId, taskId)
        removeActiveTask(taskId)
        updateTaskVisibility(displayId, taskId, visible = false);
    }

    /**
+0 −4
Original line number Diff line number Diff line
@@ -117,10 +117,6 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener,
        if (DesktopModeStatus.canEnterDesktopMode(mContext)) {
            mDesktopModeTaskRepository.ifPresent(repository -> {
                repository.removeFreeformTask(taskInfo.displayId, taskInfo.taskId);
                repository.unminimizeTask(taskInfo.displayId, taskInfo.taskId);
                repository.removeActiveTask(taskInfo.taskId, /* excludedDisplayId= */ null);
                repository.updateTaskVisibility(
                    taskInfo.displayId, taskInfo.taskId, /* visible= */ false);
            });
        }
        mWindowDecorationViewModel.onTaskVanished(taskInfo);
+37 −0
Original line number Diff line number Diff line
@@ -534,6 +534,43 @@ class DesktopModeTaskRepositoryTest : ShellTestCase() {
        assertThat(repo.removeBoundsBeforeMaximize(taskId)).isNull()
    }

    @Test
    fun removeFreeformTask_removesActiveTask() {
        val taskId = 1
        val listener = TestListener()
        repo.addActiveTaskListener(listener)
        repo.addActiveTask(DEFAULT_DISPLAY, taskId)
        repo.addOrMoveFreeformTaskToTop(DEFAULT_DISPLAY, taskId)

        repo.removeFreeformTask(THIRD_DISPLAY, taskId)

        assertThat(repo.isActiveTask(taskId)).isFalse()
        assertThat(listener.activeChangesOnDefaultDisplay).isEqualTo(2)
    }

    @Test
    fun removeFreeformTask_unminimizesTask() {
        val taskId = 1
        repo.addActiveTask(DEFAULT_DISPLAY, taskId)
        repo.addOrMoveFreeformTaskToTop(DEFAULT_DISPLAY, taskId)
        repo.minimizeTask(DEFAULT_DISPLAY, taskId)

        repo.removeFreeformTask(DEFAULT_DISPLAY, taskId)

        assertThat(repo.isMinimizedTask(taskId)).isFalse()
    }

    @Test
    fun removeFreeformTask_updatesTaskVisibility() {
        val taskId = 1
        repo.addActiveTask(DEFAULT_DISPLAY, taskId)
        repo.addOrMoveFreeformTaskToTop(DEFAULT_DISPLAY, taskId)

        repo.removeFreeformTask(THIRD_DISPLAY, taskId)

        assertThat(repo.isVisibleTask(taskId)).isFalse()
    }

    @Test
    fun saveBoundsBeforeMaximize_boundsSavedByTaskId() {
        val taskId = 1