Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a832737 authored by Shreya Singh's avatar Shreya Singh Committed by Android (Google) Code Review
Browse files

Merge "Passing callingUserId to allow provisioning of managed profile on...

Merge "Passing callingUserId to allow provisioning of managed profile on corresponding callingUserId"
parents 907060a9 a0e4467b
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -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,