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

Commit a0e4467b authored by shreyacsingh's avatar shreyacsingh Committed by Shreya Singh
Browse files

Passing callingUserId to allow provisioning of managed profile on corresponding callingUserId

Test: Added in cts
Change-Id: I00563139b3fe22dc91239919932218c3da9c4ec9
parent 00417514
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,