Re-activate backup service after cleaning a profile owner
Currently backup service is re-activated unconditionally when clearing
a device owner but not profile owner. With this CL it should be
re-activate in both cases.
NB: there are two bits of state related to backup service:
1. activated or deactivated: This is out of user control, but can be
changed by the admin via DPM.setBackupServiceEnabled (this name is
a bit misleading here).
2. enabled or disabled: this is controlled by the user via Settings
and only available when backup service is activated (see 1.)
Bug: 143274029
Test: atest CtsAdminTestCases && adb shell bmgr enabled
Test: atest com.android.server.devicepolicy.DevicePolicyManagerTest
Change-Id: I6f11642abe544c7df265ed7e2ad466d47796e7f9
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 aeccfc5..f571411 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -943,10 +943,6 @@
verify(getServices().iactivityManager, times(1)).updateDeviceOwner(
eq(admin1.getPackageName()));
- // TODO We should check if the caller has called clearCallerIdentity().
- verify(getServices().ibackupManager, times(1)).setBackupServiceActive(
- eq(UserHandle.USER_SYSTEM), eq(false));
-
verify(mContext.spiedContext, times(1)).sendBroadcastAsUser(
MockUtils.checkIntentAction(DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED),
MockUtils.checkUserHandle(UserHandle.USER_SYSTEM));
@@ -1175,6 +1171,37 @@
// TODO Check other calls.
}
+ public void testDeviceOwnerBackupActivateDeactivate() throws Exception {
+ mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
+ mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
+
+ // Set admin1 as a DA to the secondary user.
+ mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+ setUpPackageManagerForAdmin(admin1, DpmMockContext.CALLER_SYSTEM_USER_UID);
+ dpm.setActiveAdmin(admin1, /* replace =*/ false);
+ assertTrue(dpm.setDeviceOwner(admin1, "owner-name"));
+
+ verify(getServices().ibackupManager, times(1)).setBackupServiceActive(
+ eq(UserHandle.USER_SYSTEM), eq(false));
+
+ dpm.clearDeviceOwnerApp(admin1.getPackageName());
+
+ verify(getServices().ibackupManager, times(1)).setBackupServiceActive(
+ eq(UserHandle.USER_SYSTEM), eq(true));
+ }
+
+ public void testProfileOwnerBackupActivateDeactivate() throws Exception {
+ setAsProfileOwner(admin1);
+
+ verify(getServices().ibackupManager, times(1)).setBackupServiceActive(
+ eq(DpmMockContext.CALLER_USER_HANDLE), eq(false));
+
+ dpm.clearProfileOwner(admin1);
+
+ verify(getServices().ibackupManager, times(1)).setBackupServiceActive(
+ eq(DpmMockContext.CALLER_USER_HANDLE), eq(true));
+ }
+
public void testClearDeviceOwner_fromDifferentUser() throws Exception {
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
mContext.callerPermissions.add(permission.MANAGE_USERS);