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

Commit 62d25e0e authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Make detached task trimmable" into sc-dev

parents a5f3d139 b0267bd0
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -1436,20 +1436,18 @@ class RecentTasks {

    /** @return whether the given task can be trimmed even if it is outside the visible range. */
    protected boolean isTrimmable(Task task) {
        final Task rootTask = task.getRootTask();

        // No stack for task, just trim it
        if (rootTask == null) {
        // The task was detached, just trim it.
        if (!task.isAttached()) {
            return true;
        }

        // Ignore tasks from different displays
        // TODO (b/115289124): No Recents on non-default displays.
        if (!rootTask.isOnHomeDisplay()) {
        if (!task.isOnHomeDisplay()) {
            return false;
        }

        final Task rootHomeTask = rootTask.getDisplayArea().getRootHomeTask();
        final Task rootHomeTask = task.getDisplayArea().getRootHomeTask();
        // Home task does not exist. Don't trim the task.
        if (rootHomeTask == null) {
            return false;
+13 −3
Original line number Diff line number Diff line
@@ -641,7 +641,6 @@ public class RecentTasksTest extends WindowTestsBase {

    @Test
    public void testVisibleTasks_excludedFromRecents() {
        mRecentTasks.setOnlyTestVisibleRange();
        mRecentTasks.setParameters(-1 /* min */, 4 /* max */, -1 /* ms */);

        Task excludedTask1 = createTaskBuilder(".ExcludedTask1")
@@ -650,15 +649,26 @@ public class RecentTasksTest extends WindowTestsBase {
        Task excludedTask2 = createTaskBuilder(".ExcludedTask2")
                .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
                .build();
        Task detachedExcludedTask = createTaskBuilder(".DetachedExcludedTask")
                .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
                .build();

        // Move home to front so other task can satisfy the condition in RecentTasks#isTrimmable.
        mRootWindowContainer.getDefaultTaskDisplayArea().getRootHomeTask().moveToFront("test");
        // Avoid Task#autoRemoveFromRecents when removing from parent.
        detachedExcludedTask.setHasBeenVisible(true);
        detachedExcludedTask.removeImmediately();
        assertFalse(detachedExcludedTask.isAttached());

        mRecentTasks.add(detachedExcludedTask);
        mRecentTasks.add(excludedTask1);
        mRecentTasks.add(mTasks.get(0));
        mRecentTasks.add(mTasks.get(1));
        mRecentTasks.add(mTasks.get(2));
        mRecentTasks.add(excludedTask2);

        // The last excluded task should be trimmed, while the first-most excluded task should not
        triggerTrimAndAssertTrimmed(excludedTask1);
        // Except the first-most excluded task, other excluded tasks should be trimmed.
        triggerTrimAndAssertTrimmed(excludedTask1, detachedExcludedTask);
    }

    @Test