From 504fa62f9ec2eab7e6ec88002735940575c89f08 Mon Sep 17 00:00:00 2001 From: Michal Karpinski Date: Wed, 16 Nov 2016 13:56:11 +0000 Subject: [PATCH] DO NOT MERGE Disable DO single user features when clearDeviceOwner() is called regardless of the amount of users Bug: 32901196 Bug: 29748723 Change-Id: Ie419b5e496e23656cbe5436942d9aba402bfe68e --- .../DevicePolicyManagerService.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index da2beaee5a358..232300a2e70c1 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -6049,7 +6049,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private void clearDeviceOwnerLocked(ActiveAdmin admin, int userId) { - disableDeviceOwnerManagedSingleUserFeaturesIfNeeded(); if (admin != null) { admin.disableCamera = false; admin.userRestrictions = null; @@ -6061,6 +6060,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { mOwners.clearDeviceOwner(); mOwners.writeDeviceOwner(); updateDeviceOwnerLocked(); + disableDeviceOwnerManagedSingleUserFeaturesIfNeeded(); try { if (mInjector.getIBackupManager() != null) { // Reactivate backup service. @@ -9071,19 +9071,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private synchronized void disableDeviceOwnerManagedSingleUserFeaturesIfNeeded() { - if (!isDeviceOwnerManagedSingleUserDevice()) { + final boolean isSingleUserManagedDevice = isDeviceOwnerManagedSingleUserDevice(); + + // disable security logging if needed + if (!isSingleUserManagedDevice) { mInjector.securityLogSetLoggingEnabledProperty(false); - Slog.w(LOG_TAG, "Security logging turned off as it's no longer a single user device."); - - getDeviceOwnerAdminLocked().isNetworkLoggingEnabled = false; - saveSettingsLocked(mInjector.userHandleGetCallingUserId()); - setNetworkLoggingActiveInternal(false); - Slog.w(LOG_TAG, "Network logging turned off as it's no longer a single user" + Slog.w(LOG_TAG, "Security logging turned off as it's no longer a single user managed" + " device."); + } + // disable backup service if needed + // note: when clearing DO, the backup service shouldn't be disabled if it was enabled by + // the device owner + if (mOwners.hasDeviceOwner() && !isSingleUserManagedDevice) { + setBackupServiceEnabledInternal(false); + Slog.w(LOG_TAG, "Backup is off as it's a managed device that has more that one user."); + } + + // disable network logging if needed + if (!isSingleUserManagedDevice) { + setNetworkLoggingActiveInternal(false); + Slog.w(LOG_TAG, "Network logging turned off as it's no longer a single user managed" + + " device."); + // if there still is a device owner, disable logging policy, otherwise the admin + // has been nuked if (mOwners.hasDeviceOwner()) { - setBackupServiceEnabledInternal(false); - Slog.w(LOG_TAG, "Backup is off as it's a managed device that has more that one user."); + getDeviceOwnerAdminLocked().isNetworkLoggingEnabled = false; + saveSettingsLocked(mOwners.getDeviceOwnerUserId()); } } }