summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java26
1 files changed, 13 insertions, 13 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 70422bb8169a..26f02514455c 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -13982,7 +13982,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
@Override
public boolean isProvisioningAllowed(String action, String packageName) {
Objects.requireNonNull(packageName);
-
final CallerIdentity caller = getCallerIdentity();
final long ident = mInjector.binderClearCallingIdentity();
try {
@@ -13994,21 +13993,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
mInjector.binderRestoreCallingIdentity(ident);
}
- return checkProvisioningPreconditionSkipPermission(action, packageName) == STATUS_OK;
+ return checkProvisioningPreconditionSkipPermission(action, packageName, caller.getUserId())
+ == STATUS_OK;
}
@Override
public int checkProvisioningPrecondition(String action, String packageName) {
Objects.requireNonNull(packageName, "packageName is null");
-
+ final CallerIdentity caller = getCallerIdentity();
Preconditions.checkCallAuthorization(
hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
- return checkProvisioningPreconditionSkipPermission(action, packageName);
+ return checkProvisioningPreconditionSkipPermission(action, packageName, caller.getUserId());
}
-
private int checkProvisioningPreconditionSkipPermission(String action,
- String packageName) {
+ String packageName, int userId) {
if (!mHasFeature) {
logMissingFeatureAction("Cannot check provisioning for action " + action);
return STATUS_DEVICE_ADMIN_NOT_SUPPORTED;
@@ -14016,7 +14015,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
if (!isProvisioningAllowed()) {
return STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS;
}
- final int code = checkProvisioningPreConditionSkipPermissionNoLog(action, packageName);
+ final int code = checkProvisioningPreConditionSkipPermissionNoLog(
+ action, packageName, userId);
if (code != STATUS_OK) {
Slogf.d(LOG_TAG, "checkProvisioningPreCondition(" + action + ", " + packageName
+ ") failed: "
@@ -14043,15 +14043,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
private int checkProvisioningPreConditionSkipPermissionNoLog(String action,
- String packageName) {
- final int callingUserId = mInjector.userHandleGetCallingUserId();
+ String packageName, int userId) {
if (action != null) {
switch (action) {
case DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE:
- return checkManagedProfileProvisioningPreCondition(packageName, callingUserId);
+ return checkManagedProfileProvisioningPreCondition(packageName, userId);
case DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE:
case DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE:
- return checkDeviceOwnerProvisioningPreCondition(callingUserId);
+ return checkDeviceOwnerProvisioningPreCondition(userId);
}
}
throw new IllegalArgumentException("Unknown provisioning action " + action);
@@ -17622,7 +17621,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
final long identity = Binder.clearCallingIdentity();
try {
final int result = checkProvisioningPreconditionSkipPermission(
- ACTION_PROVISION_MANAGED_PROFILE, admin.getPackageName());
+ ACTION_PROVISION_MANAGED_PROFILE, admin.getPackageName(), caller.getUserId());
if (result != STATUS_OK) {
throw new ServiceSpecificException(
ERROR_PRE_CONDITION_FAILED,
@@ -18032,7 +18031,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
final long identity = Binder.clearCallingIdentity();
try {
int result = checkProvisioningPreconditionSkipPermission(
- ACTION_PROVISION_MANAGED_DEVICE, deviceAdmin.getPackageName());
+ ACTION_PROVISION_MANAGED_DEVICE, deviceAdmin.getPackageName(),
+ caller.getUserId());
if (result != STATUS_OK) {
throw new ServiceSpecificException(
ERROR_PRE_CONDITION_FAILED,