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

Commit d7b43dd4 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Add per-user version of DevicePolicyManager.getUserRestrictions."

parents 5bd8bfe9 1c277a5d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3788,12 +3788,18 @@ public class DevicePolicyManager {
     * {@link UserManager#getUserRestrictions()}.
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
     * @throws SecurityException if the {@code admin} is not an active admin.
     */
    public Bundle getUserRestrictions(@NonNull ComponentName admin) {
        return getUserRestrictions(admin, myUserId());
    }

    /** @hide per-user version */
    public Bundle getUserRestrictions(@NonNull ComponentName admin, int userHandle) {
        Bundle ret = null;
        if (mService != null) {
            try {
                ret = mService.getUserRestrictions(admin);
                ret = mService.getUserRestrictions(admin, userHandle);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed talking with device policy service", e);
            }
+1 −1
Original line number Diff line number Diff line
@@ -149,7 +149,7 @@ interface IDevicePolicyManager {
    ComponentName getRestrictionsProvider(int userHandle);

    void setUserRestriction(in ComponentName who, in String key, boolean enable);
    Bundle getUserRestrictions(in ComponentName who);
    Bundle getUserRestrictions(in ComponentName who, int userId);
    void addCrossProfileIntentFilter(in ComponentName admin, in IntentFilter filter, int flags);
    void clearCrossProfileIntentFilters(in ComponentName admin);

+10 −3
Original line number Diff line number Diff line
@@ -5718,11 +5718,18 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    }

    @Override
    public Bundle getUserRestrictions(ComponentName who) {
    public Bundle getUserRestrictions(ComponentName who, int userHandle) {
        Preconditions.checkNotNull(who, "ComponentName is null");
        enforceCrossUserPermission(userHandle);
        synchronized (this) {
            final ActiveAdmin activeAdmin =
                    getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
            ActiveAdmin activeAdmin = getActiveAdminUncheckedLocked(who, userHandle);
            if (activeAdmin == null) {
                throw new SecurityException("No active admin: " + activeAdmin);
            }
            if (activeAdmin.getUid() != mInjector.binderGetCallingUid()) {
                mContext.enforceCallingOrSelfPermission(
                        android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS, null);
            }
            return activeAdmin.userRestrictions;
        }
    }