Merge "Make detached task trimmable" into sc-dev

This commit is contained in:
Riddle Hsu
2021-04-19 05:49:08 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 9 deletions

View File

@@ -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;

View File

@@ -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