From 0ec0709b7ea7a1ca877f526b5d8ae4047e3dfbc1 Mon Sep 17 00:00:00 2001 From: Kholoud Mohamed Date: Tue, 30 May 2023 09:53:59 +0000 Subject: Fix bug in policy engine Fixes: 284310582 Test: btest android.devicepolicy.cts.DeviceManagementCoexistenceTest#multiplePoliciesSet_dpcRemoved_removesPolicies Change-Id: Ifeba7225d41acfc3223706c23a0fd302af670f05 --- .../com/android/server/devicepolicy/DevicePolicyEngine.java | 4 ++-- .../server/devicepolicy/DevicePolicyManagerService.java | 13 +++---------- .../server/devicepolicy/PolicyEnforcerCallbacks.java | 2 +- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java index 79c03497223a..5ba22830eec9 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java @@ -454,8 +454,8 @@ final class DevicePolicyEngine { onGlobalPolicyChanged(policyDefinition, enforcingAdmin); } - applyGlobalPolicyOnUsersWithLocalPoliciesLocked( - policyDefinition, enforcingAdmin, /* value= */ null, /* enforcePolicy= */ true); + applyGlobalPolicyOnUsersWithLocalPoliciesLocked(policyDefinition, enforcingAdmin, + /* value= */ null, /* skipEnforcePolicy= */ false); sendPolicyResultToAdmin( enforcingAdmin, diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index c96bfd716297..a93ab074f05f 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -14907,8 +14907,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { policy = new LockTaskPolicy(currentPolicy); policy.setPackages(Set.of(packages)); } - if (policy.getPackages().isEmpty() - && policy.getFlags() == DevicePolicyManager.LOCK_TASK_FEATURE_NONE) { + if (policy.getPackages().isEmpty()) { mDevicePolicyEngine.removeLocalPolicy( PolicyDefinition.LOCK_TASK, enforcingAdmin, @@ -20690,7 +20689,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void addUserControlDisabledPackages(CallerIdentity caller, EnforcingAdmin enforcingAdmin, Set packages) { - if (isCallerDeviceOwner(caller)) { + if (isDeviceOwner(caller)) { mDevicePolicyEngine.setGlobalPolicy( PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES, enforcingAdmin, @@ -20706,7 +20705,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void removeUserControlDisabledPackages(CallerIdentity caller, EnforcingAdmin enforcingAdmin) { - if (isCallerDeviceOwner(caller)) { + if (isDeviceOwner(caller)) { mDevicePolicyEngine.removeGlobalPolicy( PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES, enforcingAdmin); @@ -20718,12 +20717,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } - private boolean isCallerDeviceOwner(CallerIdentity caller) { - synchronized (getLockObject()) { - return getDeviceOwnerUserIdUncheckedLocked() == caller.getUserId(); - } - } - @Override public List getUserControlDisabledPackages(ComponentName who, String callerPackageName) { diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java index 454337fcf141..3b048b250075 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java @@ -167,7 +167,7 @@ final class PolicyEnforcerCallbacks { packages == null ? null : packages.stream().toList()); LocalServices.getService(UsageStatsManagerInternal.class) .setAdminProtectedPackages( - packages == null ? null : new ArraySet(packages), userId); + packages == null ? null : new ArraySet<>(packages), userId); }); return true; } -- cgit v1.2.3-59-g8ed1b