From 473d4e111cc50b99bdbf3262f2e88b4c71e073ea Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Wed, 7 Apr 2021 13:36:39 -0700 Subject: [PATCH] Integrated policy-exempt apps into isLockTaskPermitted(). Test: atest CtsDevicePolicyManagerTestCases:com.android.cts.devicepolicy.MixedDeviceOwnerTest#testIsLockTaskPermitted_includesPolicyExemptApps # on phone and automotive Bug: 181238156 Change-Id: Ic2e9195beba55b3d8e69e437e564ff092c22db61 --- .../devicepolicy/DevicePolicyManagerService.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 66e640d666ed2..1ba57fd0251b2 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -11698,9 +11698,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isLockTaskPermitted(String pkg) { - final int userHandle = mInjector.userHandleGetCallingUserId(); + // Check policy-exempt apps first, as it doesn't require the lock + if (listPolicyExemptAppsUnchecked().contains(pkg)) { + if (VERBOSE_LOG) { + Slogf.v(LOG_TAG, "isLockTaskPermitted(%s): returning true for policy-exempt app", + pkg); + } + return true; + } + + final int userId = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { - return getUserData(userHandle).mLockTaskPackages.contains(pkg); + return getUserData(userId).mLockTaskPackages.contains(pkg); } }