From 7dcbfb02c9bd1e6ba05168637c8c5b66f95696db Mon Sep 17 00:00:00 2001 From: Benjamin Franz Date: Tue, 16 Jan 2018 15:16:16 +0000 Subject: [PATCH] Block root task from being shown in recents Do not show the root task of lock task mode in recents and thereby block it from being swiped away. Bug: 70332786 Test: manual Change-Id: I529c2896faae6b6d94ba3b758d15f40d83fb8573 --- .../java/com/android/server/am/LockTaskController.java | 10 ++++++++++ .../core/java/com/android/server/am/RecentTasks.java | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/services/core/java/com/android/server/am/LockTaskController.java b/services/core/java/com/android/server/am/LockTaskController.java index ed39329844ef4..7eb0bf4bb0a88 100644 --- a/services/core/java/com/android/server/am/LockTaskController.java +++ b/services/core/java/com/android/server/am/LockTaskController.java @@ -284,6 +284,16 @@ public class LockTaskController { return false; } + /** + * @return the root task of the lock task. + */ + TaskRecord getRootTask() { + if (mLockTaskModeTasks.isEmpty()) { + return null; + } + return mLockTaskModeTasks.get(0); + } + private boolean isLockTaskModeViolationInternal(TaskRecord task, boolean isNewClearTask) { // TODO: Double check what's going on here. If the task is already in lock task mode, it's // likely whitelisted, so will return false below. diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java index fc8b624f6b7e6..345246856d28a 100644 --- a/services/core/java/com/android/server/am/RecentTasks.java +++ b/services/core/java/com/android/server/am/RecentTasks.java @@ -1150,6 +1150,11 @@ class RecentTasks { } } + // If we're in lock task mode, ignore the root task + if (task == mService.mLockTaskController.getRootTask()) { + return false; + } + return true; }