From b9abece8fbe23cdc2e3377a1141e26e496626089 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Tue, 10 Aug 2021 17:06:08 +0800 Subject: [PATCH] Auto remove the embedded task from Recents The embedded task was displayed in Recents because we won't be able to tell if the task is embedded once the task is removed from the wm hierarchy. Bug: 194243805 Test: not showing embedded task in Recents Change-Id: I045ebad855b19a7711af3426d78f02d3f247d29c --- services/core/java/com/android/server/wm/Task.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index f6317a49b4d88..bcabce52cbd8e 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -723,7 +723,7 @@ class Task extends TaskFragment { } catch (RemoteException e) { } } - if (autoRemoveFromRecents() || isVoiceSession) { + if (autoRemoveFromRecents(oldParent.asTaskFragment()) || isVoiceSession) { // Task creator asked to remove this when done, or this task was a voice // interaction, so it should not remain on the recent tasks list. mTaskSupervisor.mRecentTasks.remove(this); @@ -1575,11 +1575,12 @@ class Task extends TaskFragment { return count > 0; } - private boolean autoRemoveFromRecents() { + private boolean autoRemoveFromRecents(TaskFragment oldParentFragment) { // We will automatically remove the task either if it has explicitly asked for // this, or it is empty and has never contained an activity that got shown to - // the user. - return autoRemoveRecents || (!hasChild() && !getHasBeenVisible()); + // the user, or it was being embedded in another Task. + return autoRemoveRecents || (!hasChild() && !getHasBeenVisible() + || (oldParentFragment != null && oldParentFragment.isEmbedded())); } private void clearPinnedTaskIfNeed() {