summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Orhan Uysal <uysalorhan@google.com> 2024-10-18 11:55:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-18 11:55:37 +0000
commit552200a58d1281e8668713ccd7974914bc64500c (patch)
tree306f3adfd09149087ffd5c9a5f7a764760ea78b2
parentdb71101981f355590064764ffece5b286d765f52 (diff)
parent423f19286d686bddf66dc828d8978a3326027445 (diff)
Merge "Remove tasks from repo on ExitDesktop transitions." into main
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt5
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt28
2 files changed, 28 insertions, 5 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
index 0b1bb8f36fa8..d1534da9a078 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
@@ -29,6 +29,7 @@ import android.window.DesktopModeFlags
import android.window.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.ShellTaskOrganizer
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.isExitDesktopModeTransition
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
@@ -79,7 +80,9 @@ class DesktopTasksTransitionObserver(
private fun removeTaskIfNeeded(info: TransitionInfo) {
// Since we are no longer removing all the tasks [onTaskVanished], we need to remove them by
// checking the transitions.
- if (!TransitionUtil.isOpeningType(info.type)) return
+ if (!(TransitionUtil.isOpeningType(info.type) || info.type.isExitDesktopModeTransition())) {
+ return
+ }
// Remove a task from the repository if the app is launched outside of desktop.
for (change in info.changes) {
val taskInfo = change.taskInfo
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
index fe87aa88a8db..737439ce3cfe 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
@@ -40,6 +40,7 @@ import com.android.window.flags.Flags
import com.android.wm.shell.MockToken
import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.common.ShellExecutor
+import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.Transitions
@@ -126,14 +127,32 @@ class DesktopTasksTransitionObserverTest {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun removeTasks_onTaskFullscreenLaunch_taskRemovedFromRepo() {
+ fun removeTasks_onTaskFullscreenLaunchWithOpenTransition_taskRemovedFromRepo() {
val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN)
whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1)
whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true)
transitionObserver.onTransitionReady(
transition = mock(),
- info = createOpenTransition(task),
+ info = createOpenChangeTransition(task),
+ startTransaction = mock(),
+ finishTransaction = mock(),
+ )
+
+ verify(taskRepository, never()).minimizeTask(task.displayId, task.taskId)
+ verify(taskRepository).removeFreeformTask(task.displayId, task.taskId)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
+ fun removeTasks_onTaskFullscreenLaunchExitDesktopTransition_taskRemovedFromRepo() {
+ val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN)
+ whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1)
+ whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true)
+
+ transitionObserver.onTransitionReady(
+ transition = mock(),
+ info = createOpenChangeTransition(task, TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG),
startTransaction = mock(),
finishTransaction = mock(),
)
@@ -178,8 +197,9 @@ class DesktopTasksTransitionObserverTest {
}
}
- private fun createOpenTransition(
- task: RunningTaskInfo?
+ private fun createOpenChangeTransition(
+ task: RunningTaskInfo?,
+ type: Int = TRANSIT_OPEN
): TransitionInfo {
return TransitionInfo(TRANSIT_OPEN, 0 /* flags */).apply {
addChange(