summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorge Gil <jorgegil@google.com> 2024-11-09 04:33:53 +0000
committer Jorge Gil <jorgegil@google.com> 2024-11-13 19:34:52 +0000
commit05035c6771f283bd40d44e14ef2c7f9362e83cbd (patch)
tree1838e07d9998af635b7d007a3d4171440e5e0d53
parent2034639bb61d1493572cbb285ddb5b8902e64b81 (diff)
Remove immersive task from repository when task is removed
When a task is removed from the active task list (i.e. it is no longer a desktop task), make sure to mark it as no longer immersive if it was immersive. This change also updates the persistence repository with a desktop id (using display id as there are no desktops yet) because otherwise multi-display unit tests always modify the same desktop, which is causing failures if a second display's repository data is non-null. Flag: com.android.window.flags.enable_fully_immersive_in_desktop Fix: 378172979 Test: enter desktop immersive, exit desktop to fullscreen or split, go back to desktop, verify immersive button is responsive and the task can re-enter immersive. Change-Id: I2dcf6a7acca34dc60ae15b2a725a0d05048468eb
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt9
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
index 08ca55f93e3f..7fcb7678f6af 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
@@ -411,6 +411,12 @@ class DesktopRepository (
desktopTaskDataByDisplayId[displayId]?.freeformTasksInZOrder?.toDumpString())
// Remove task from unminimized task if it is minimized.
unminimizeTask(displayId, taskId)
+ // Mark task as not in immersive if it was immersive.
+ setTaskInFullImmersiveState(
+ displayId = displayId,
+ taskId = taskId,
+ immersive = false
+ )
removeActiveTask(taskId)
removeVisibleTask(taskId)
if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) {
@@ -487,6 +493,9 @@ class DesktopRepository (
mainCoroutineScope.launch {
try {
persistentRepository.addOrUpdateDesktop(
+ // Use display id as desktop id for now since only once desktop per display
+ // is supported.
+ desktopId = displayId,
visibleTasks = desktopTaskDataByDisplayIdCopy.visibleTasks,
minimizedTasks = desktopTaskDataByDisplayIdCopy.minimizedTasks,
freeformTasksInZOrder = desktopTaskDataByDisplayIdCopy.freeformTasksInZOrder