diff options
| author | 2024-09-03 23:49:08 +0000 | |
|---|---|---|
| committer | 2024-09-03 23:49:08 +0000 | |
| commit | 7f8eef19d367b8526bca2d0ad8a85e20c66ffcf4 (patch) | |
| tree | 86c46876152805ca846fcedc864366d012223738 | |
| parent | ab478e983a9851df39e05ac64d3332ac5b622d3d (diff) | |
| parent | 25072469af6ddaac5a3e12b479b925b445290642 (diff) | |
Merge "Prevent TaskView's task from getting trimmed by Recents" into main
2 files changed, 13 insertions, 24 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java index 0259701a4653..e74342e1910c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java @@ -604,7 +604,6 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { }); } mTaskViewBase.onTaskVanished(taskInfo); - mTaskOrganizer.setInterceptBackPressedOnTaskRoot(taskInfo.token, false); } } @@ -718,6 +717,9 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { mTaskViewBase.setResizeBgColor(startTransaction, backgroundColor); } + // After the embedded task has appeared, set it to non-trimmable. This is important + // to prevent recents from trimming and removing the embedded task. + wct.setTaskTrimmableFromRecents(taskInfo.token, false /* isTrimmableFromRecents */); mTaskViewBase.onTaskAppeared(mTaskInfo, mTaskLeash); if (mListener != null) { final int taskId = mTaskInfo.taskId; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/taskview/TaskViewTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/taskview/TaskViewTest.java index c596ca3fca6b..198488582700 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/taskview/TaskViewTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/taskview/TaskViewTest.java @@ -294,16 +294,6 @@ public class TaskViewTest extends ShellTestCase { } @Test - public void testUnsetOnBackPressedOnTaskRoot_legacyTransitions() { - assumeFalse(Transitions.ENABLE_SHELL_TRANSITIONS); - mTaskViewTaskController.onTaskAppeared(mTaskInfo, mLeash); - verify(mOrganizer).setInterceptBackPressedOnTaskRoot(eq(mTaskInfo.token), eq(true)); - - mTaskViewTaskController.onTaskVanished(mTaskInfo); - verify(mOrganizer).setInterceptBackPressedOnTaskRoot(eq(mTaskInfo.token), eq(false)); - } - - @Test public void testOnNewTask_noSurface() { assumeTrue(Transitions.ENABLE_SHELL_TRANSITIONS); WindowContainerTransaction wct = new WindowContainerTransaction(); @@ -443,19 +433,6 @@ public class TaskViewTest extends ShellTestCase { } @Test - public void testUnsetOnBackPressedOnTaskRoot() { - assumeTrue(Transitions.ENABLE_SHELL_TRANSITIONS); - WindowContainerTransaction wct = new WindowContainerTransaction(); - mTaskViewTaskController.prepareOpenAnimation(true /* newTask */, - new SurfaceControl.Transaction(), new SurfaceControl.Transaction(), mTaskInfo, - mLeash, wct); - verify(mOrganizer).setInterceptBackPressedOnTaskRoot(eq(mTaskInfo.token), eq(true)); - - mTaskViewTaskController.prepareCloseAnimation(); - verify(mOrganizer).setInterceptBackPressedOnTaskRoot(eq(mTaskInfo.token), eq(false)); - } - - @Test public void testSetObscuredTouchRect() { mTaskView.setObscuredTouchRect( new Rect(/* left= */ 0, /* top= */ 10, /* right= */ 100, /* bottom= */ 120)); @@ -715,6 +692,16 @@ public class TaskViewTest extends ShellTestCase { } @Test + public void testOnAppeared_setsTrimmableTask() { + WindowContainerTransaction wct = new WindowContainerTransaction(); + mTaskViewTaskController.prepareOpenAnimation(true /* newTask */, + new SurfaceControl.Transaction(), new SurfaceControl.Transaction(), mTaskInfo, + mLeash, wct); + + assertThat(wct.getHierarchyOps().get(0).isTrimmableFromRecents()).isFalse(); + } + + @Test public void testMoveToFullscreen_callsTaskRemovalStarted() { WindowContainerTransaction wct = new WindowContainerTransaction(); mTaskViewTaskController.prepareOpenAnimation(true /* newTask */, |