From d9758e7479a3d398bc8fcf80846153cf72d61fb6 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Wed, 7 Dec 2016 17:50:02 +0000 Subject: [PATCH] Clear DISALLOW_ADD_USER user restriction when dpm remove-active-admin is called from shell - Make the CTS hermetic and not adding new restriction after CTS test - DeviceOwner can't clear this user restriction in CTS, as it's set by ManagedProvisioning - It can be only clear when testOnly DPC becomes deviceOwner, and being removed by remove-active-admin in shell Bug:31856203 Test: build successfully Change-Id: I75b91629ef09c54e9dbe7253df6a52894a938e83 --- .../devicepolicy/DevicePolicyManagerService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index a2af40c246abb..36692e5a84583 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -3093,6 +3093,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { // If admin is a device or profile owner tidy that up first. if (isDeviceOwner(adminReceiver, userHandle)) { clearDeviceOwnerLocked(getDeviceOwnerAdminLocked(), userHandle); + clearDeviceOwnerUserRestrictionLocked(UserHandle.of(userHandle)); } if (isProfileOwner(adminReceiver, userHandle)) { final ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver, @@ -3108,6 +3109,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + // It's temporary solution to clear DISALLOW_ADD_USER after CTS + // TODO: b/31952368 when the restriction is moved from system to the device owner, + // it can be removed. + private void clearDeviceOwnerUserRestrictionLocked(UserHandle userHandle) { + if (mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER, userHandle)) { + mUserManager.setUserRestriction(UserManager.DISALLOW_ADD_USER, false, userHandle); + } + } + /** * Return if a given package has testOnly="true", in which case we'll relax certain rules * for CTS.