diff options
| -rw-r--r-- | core/java/android/app/admin/DevicePolicyManager.java | 21 | ||||
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 61 |
2 files changed, 36 insertions, 46 deletions
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 9c6410a37e62..9247486dff40 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -9335,18 +9335,12 @@ public class DevicePolicyManager { } /** - * Allows the device owner or profile owner to enable or disable the backup service. + * Allows the device owner to enable or disable the backup service. * - * <p> Each user has its own backup service which manages the backup and restore mechanisms in - * that user. Disabling the backup service will prevent data from being backed up or restored. + * <p> Backup service manages all backup and restore mechanisms on the device. Setting this to + * false will prevent data from being backed up or restored. * - * <p> Device owner calls this API to control backup services across all users on the device. - * Profile owner can use this API to enable or disable the profile's backup service. However, - * for a managed profile its backup functionality is only enabled if both the device owner - * and the profile owner have enabled the backup service. - * - * <p> By default, backup service is disabled on a device with device owner, and within a - * managed profile. + * <p> Backup service is off by default when device owner is present. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. * @param enabled {@code true} to enable the backup service, {@code false} to disable it. @@ -9362,12 +9356,7 @@ public class DevicePolicyManager { } /** - * Return whether the backup service is enabled by the device owner or profile owner for the - * current user, as previously set by {@link #setBackupServiceEnabled(ComponentName, boolean)}. - * - * <p> Whether the backup functionality is actually enabled or not depends on settings from both - * the current user and the device owner, please see - * {@link #setBackupServiceEnabled(ComponentName, boolean)} for details. + * Return whether the backup service is enabled by the device owner. * * <p> Backup service manages all backup and restore mechanisms on the device. * diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 6f0911d86ae2..76ae5ccd4eeb 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -7652,7 +7652,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } // Shutting down backup manager service permanently. - toggleBackupServiceActive(UserHandle.USER_SYSTEM, /* makeActive= */ false); + long ident = mInjector.binderClearCallingIdentity(); + try { + if (mInjector.getIBackupManager() != null) { + mInjector.getIBackupManager() + .setBackupServiceActive(UserHandle.USER_SYSTEM, false); + } + } catch (RemoteException e) { + throw new IllegalStateException("Failed deactivating backup service.", e); + } finally { + mInjector.binderRestoreCallingIdentity(ident); + } + if (isAdb()) { // Log device owner provisioning was started using adb. MetricsLogger.action(mContext, PROVISIONING_ENTRY_POINT_ADB, LOG_TAG_DEVICE_OWNER); @@ -7680,7 +7691,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { saveUserRestrictionsLocked(userId); } - long ident = mInjector.binderClearCallingIdentity(); + ident = mInjector.binderClearCallingIdentity(); try { // TODO Send to system too? sendOwnerChangedBroadcast(DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED, userId); @@ -7937,9 +7948,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { .write(); } - // Shutting down backup manager service permanently. - toggleBackupServiceActive(userHandle, /* makeActive= */ false); - mOwners.setProfileOwner(who, ownerName, userHandle); mOwners.writeProfileOwner(userHandle); Slog.i(LOG_TAG, "Profile owner set: " + who + " on user " + userHandle); @@ -7963,24 +7971,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - - private void toggleBackupServiceActive(int userId, boolean makeActive) { - // Shutting down backup manager service permanently. - enforceUserUnlocked(userId); - long ident = mInjector.binderClearCallingIdentity(); - try { - if (mInjector.getIBackupManager() != null) { - mInjector.getIBackupManager() - .setBackupServiceActive(userId, makeActive); - } - } catch (RemoteException e) { - throw new IllegalStateException("Failed deactivating backup service.", e); - } finally { - mInjector.binderRestoreCallingIdentity(ident); - } - - } - @Override public void clearProfileOwner(ComponentName who) { if (!mHasFeature) { @@ -12714,9 +12704,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Preconditions.checkNotNull(admin); - enforceProfileOrDeviceOwner(admin); - int userId = mInjector.userHandleGetCallingUserId(); - toggleBackupServiceActive(userId, enabled); + synchronized (getLockObject()) { + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); + } + + final long ident = mInjector.binderClearCallingIdentity(); + try { + IBackupManager ibm = mInjector.getIBackupManager(); + if (ibm != null) { + ibm.setBackupServiceActive(UserHandle.USER_SYSTEM, enabled); + } + } catch (RemoteException e) { + throw new IllegalStateException( + "Failed " + (enabled ? "" : "de") + "activating backup service.", e); + } finally { + mInjector.binderRestoreCallingIdentity(ident); + } } @Override @@ -12725,13 +12728,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return true; } - - enforceProfileOrDeviceOwner(admin); synchronized (getLockObject()) { try { + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); IBackupManager ibm = mInjector.getIBackupManager(); - return ibm != null && ibm.isBackupServiceActive( - mInjector.userHandleGetCallingUserId()); + return ibm != null && ibm.isBackupServiceActive(UserHandle.USER_SYSTEM); } catch (RemoteException e) { throw new IllegalStateException("Failed requesting backup service state.", e); } |