From 5ecf62bd4d1bc4c5f195c7e9776933d6fd1a27c3 Mon Sep 17 00:00:00 2001 From: Jeff Chang Date: Tue, 3 Aug 2021 12:19:59 +0800 Subject: [PATCH] Exclude the embedded tasks from Recents Currently embedded tasks with activities from other apps are showing as separate entries in Recents. We should only have a single Recents entry for the host and embedded apps as per UX definition. This CL excluded the entry from recents if the task is embedded. Bug: 194243805 Test: atest RecentTasksTest#testVisibleEmbeddedTask_expectNotVisible Change-Id: Ie4548ffc0175a1c331f3509fe9ded8c1a1a53196 --- .../java/com/android/server/wm/RecentTasks.java | 8 +++++++- .../src/com/android/server/wm/RecentTasksTest.java | 13 +++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index ede4c2ef78350..dca0bbda78cfc 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -1346,7 +1346,8 @@ class RecentTasks { + " activityType=" + task.getActivityType() + " windowingMode=" + task.getWindowingMode() + " isAlwaysOnTopWhenVisible=" + task.isAlwaysOnTopWhenVisible() - + " intentFlags=" + task.getBaseIntent().getFlags()); + + " intentFlags=" + task.getBaseIntent().getFlags() + + " isEmbedded=" + task.isEmbedded()); } switch (task.getActivityType()) { @@ -1392,6 +1393,11 @@ class RecentTasks { return false; } + // Ignore the task if it is a embedded task + if (task.isEmbedded()) { + return false; + } + return true; } diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index e3c38b06ec887..1b078b7454b2c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -787,6 +787,19 @@ public class RecentTasksTest extends WindowTestsBase { triggerTrimAndAssertTrimmed(mTasks.get(0), mTasks.get(1), mTasks.get(2), mTasks.get(3)); } + @Test + public void testVisibleEmbeddedTask_expectNotVisible() { + Task task = createTaskBuilder(".Task") + .setFlags(FLAG_ACTIVITY_NEW_TASK) + .build(); + doReturn(true).when(task).isEmbedded(); + mRecentTasks.add(task); + + assertThat(mCallbacksRecorder.mAdded).hasSize(1); + assertFalse("embedded task should not be visible recents", + mRecentTasks.isVisibleRecentTask(task)); + } + @Test public void testFreezeTaskListOrder_reorderExistingTask() { // Add some tasks