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

Commit 2478cb70 authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Merge "Make detached task trimmable" into sc-dev am: 62d25e0e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14211066

Change-Id: I8d46710172e006b46545effa4cc9db63f3e1a69a
parents 7f743feb 62d25e0e
Loading
Loading
Loading
Loading
+4 −6
Original line number Original line 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. */
    /** @return whether the given task can be trimmed even if it is outside the visible range. */
    protected boolean isTrimmable(Task task) {
    protected boolean isTrimmable(Task task) {
        final Task rootTask = task.getRootTask();
        // The task was detached, just trim it.

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


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


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


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


        Task excludedTask1 = createTaskBuilder(".ExcludedTask1")
        Task excludedTask1 = createTaskBuilder(".ExcludedTask1")
@@ -650,15 +649,26 @@ public class RecentTasksTest extends WindowTestsBase {
        Task excludedTask2 = createTaskBuilder(".ExcludedTask2")
        Task excludedTask2 = createTaskBuilder(".ExcludedTask2")
                .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
                .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
                .build();
                .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(excludedTask1);
        mRecentTasks.add(mTasks.get(0));
        mRecentTasks.add(mTasks.get(0));
        mRecentTasks.add(mTasks.get(1));
        mRecentTasks.add(mTasks.get(1));
        mRecentTasks.add(mTasks.get(2));
        mRecentTasks.add(mTasks.get(2));
        mRecentTasks.add(excludedTask2);
        mRecentTasks.add(excludedTask2);


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


    @Test
    @Test