Wiping and relinquishing org-owned devices
Add the following functionality, on devices with a managed profile
created during provisionining (and as such, considered
organization-owned):
* Let the Profile Owner relinquish a device by calling
DevicePolicyManager.wipeData. The device then transitions
to a fully-personal device.
* Let the Profile Owner wipe the entire device by calling
wipeData on the parent profile DevicePolicyManager instance.
Bug: 138709470
Test: Manual with TestDPC.
Test: atest CtsDevicePolicyManagerTestCases:com.android.cts.devicepolicy.OrgOwnedProfileOwnerTest
Test: atest com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testDeviceIdAttestationForProfileOwner
Change-Id: If3cc9741079592cb07bc1ef5ccca8fb2b57a52e9
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index f270724..eef77ee 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -5162,11 +5162,14 @@
configureProfileOwnerForDeviceIdAccess(admin1, DpmMockContext.CALLER_USER_HANDLE);
}
- private static void configureContextForAccess(DpmMockContext context, boolean granted) {
+ private void configureContextForAccess(DpmMockContext context, boolean granted) {
when(context.spiedContext.checkCallingPermission(
android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS))
.thenReturn(granted ? PackageManager.PERMISSION_GRANTED
: PackageManager.PERMISSION_DENIED);
+
+ when(getServices().userManager.getProfileParent(any()))
+ .thenReturn(UserHandle.SYSTEM);
}
public void testGrantDeviceIdsAccess_byAuthorizedManagedProvisioning() throws Exception {
@@ -5433,6 +5436,9 @@
}
private void configureProfileOwnerForDeviceIdAccess(ComponentName who, int userId) {
+ when(getServices().userManager.getProfileParent(eq(UserHandle.of(userId))))
+ .thenReturn(UserHandle.SYSTEM);
+
final long ident = mServiceContext.binder.clearCallingIdentity();
mServiceContext.binder.callingUid =
UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE, DpmMockContext.SYSTEM_UID);