Merge "Re-activate backup service after cleaning a profile owner" into qt-qpr1-dev am: c1e78426b5
Change-Id: Ia7277711125ed3be7cf9914483601488f66e94ca
This commit is contained in:
@@ -8076,15 +8076,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
mSecurityLogMonitor.stop();
|
mSecurityLogMonitor.stop();
|
||||||
setNetworkLoggingActiveInternal(false);
|
setNetworkLoggingActiveInternal(false);
|
||||||
deleteTransferOwnershipBundleLocked(userId);
|
deleteTransferOwnershipBundleLocked(userId);
|
||||||
|
toggleBackupServiceActive(UserHandle.USER_SYSTEM, true);
|
||||||
try {
|
|
||||||
if (mInjector.getIBackupManager() != null) {
|
|
||||||
// Reactivate backup service.
|
|
||||||
mInjector.getIBackupManager().setBackupServiceActive(UserHandle.USER_SYSTEM, true);
|
|
||||||
}
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
throw new IllegalStateException("Failed reactivating backup service.", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -8144,7 +8136,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void toggleBackupServiceActive(int userId, boolean makeActive) {
|
private void toggleBackupServiceActive(int userId, boolean makeActive) {
|
||||||
long ident = mInjector.binderClearCallingIdentity();
|
long ident = mInjector.binderClearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
@@ -8153,7 +8144,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
.setBackupServiceActive(userId, makeActive);
|
.setBackupServiceActive(userId, makeActive);
|
||||||
}
|
}
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new IllegalStateException("Failed deactivating backup service.", e);
|
throw new IllegalStateException(String.format("Failed %s backup service.",
|
||||||
|
makeActive ? "activating" : "deactivating"), e);
|
||||||
} finally {
|
} finally {
|
||||||
mInjector.binderRestoreCallingIdentity(ident);
|
mInjector.binderRestoreCallingIdentity(ident);
|
||||||
}
|
}
|
||||||
@@ -8204,6 +8196,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
mOwners.removeProfileOwner(userId);
|
mOwners.removeProfileOwner(userId);
|
||||||
mOwners.writeProfileOwner(userId);
|
mOwners.writeProfileOwner(userId);
|
||||||
deleteTransferOwnershipBundleLocked(userId);
|
deleteTransferOwnershipBundleLocked(userId);
|
||||||
|
toggleBackupServiceActive(userId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -912,10 +912,6 @@ public class DevicePolicyManagerTest extends DpmTestBase {
|
|||||||
verify(getServices().iactivityManager, times(1)).updateDeviceOwner(
|
verify(getServices().iactivityManager, times(1)).updateDeviceOwner(
|
||||||
eq(admin1.getPackageName()));
|
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(
|
verify(mContext.spiedContext, times(1)).sendBroadcastAsUser(
|
||||||
MockUtils.checkIntentAction(DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED),
|
MockUtils.checkIntentAction(DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED),
|
||||||
MockUtils.checkUserHandle(UserHandle.USER_SYSTEM));
|
MockUtils.checkUserHandle(UserHandle.USER_SYSTEM));
|
||||||
@@ -1144,6 +1140,37 @@ public class DevicePolicyManagerTest extends DpmTestBase {
|
|||||||
// TODO Check other calls.
|
// 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 {
|
public void testClearDeviceOwner_fromDifferentUser() throws Exception {
|
||||||
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
|
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
|
||||||
mContext.callerPermissions.add(permission.MANAGE_USERS);
|
mContext.callerPermissions.add(permission.MANAGE_USERS);
|
||||||
|
|||||||
Reference in New Issue
Block a user