summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Suprabh Shukla <suprabh@google.com> 2016-08-05 23:36:16 +0000
committer android-build-merger <android-build-merger@google.com> 2016-08-05 23:36:16 +0000
commitf0b9bd4f80cde7ac29049737d067707cad37e5c9 (patch)
treede3421915e32ad97acf8997893adeb3d2b13b4e2
parentea578665005c496d36c33c5814a241cbd712128e (diff)
parent58da13b6fae23bab6d7fc0660748425d856e5e61 (diff)
Not trying to remove admins already being removed am: 9704e409df am: 636cd41893
am: 58da13b6fa Change-Id: I2da5ec521d940156dc6f06019a0b85cddece0ce5
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 4ba423d28ecf..2478aff82a92 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2093,8 +2093,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
void removeActiveAdminLocked(final ComponentName adminReceiver, final int userHandle) {
final ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver, userHandle);
- if (admin != null) {
- getUserData(userHandle).mRemovingAdmins.add(adminReceiver);
+ DevicePolicyData policy = getUserData(userHandle);
+ if (admin != null && !policy.mRemovingAdmins.contains(adminReceiver)) {
+ policy.mRemovingAdmins.add(adminReceiver);
sendAdminCommandLocked(admin,
DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED,
new BroadcastReceiver() {
@@ -5710,7 +5711,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
synchronized (this) {
enforceCanSetDeviceOwnerLocked(userId);
- if (getActiveAdminUncheckedLocked(admin, userId) == null) {
+ if (getActiveAdminUncheckedLocked(admin, userId) == null
+ || getUserData(userId).mRemovingAdmins.contains(admin)) {
throw new IllegalArgumentException("Not active admin: " + admin);
}
@@ -5898,7 +5900,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
synchronized (this) {
enforceCanSetProfileOwnerLocked(userHandle);
- if (getActiveAdminUncheckedLocked(who, userHandle) == null) {
+ if (getActiveAdminUncheckedLocked(who, userHandle) == null
+ || getUserData(userHandle).mRemovingAdmins.contains(who)) {
throw new IllegalArgumentException("Not active admin: " + who);
}