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

Commit 6c505ecd authored by Sudheer Shanka's avatar Sudheer Shanka Committed by android-build-merger
Browse files

Merge "Update RestrictedLockUtils to use UM.getUserRestrictionSource." into nyc-dev

am: 0d902adb

* commit '0d902adb':
  Update RestrictedLockUtils to use UM.getUserRestrictionSource.

Change-Id: I2a0a71595b2af94d9806386877ca510c0cee3271
parents d918a778 0d902adb
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -5061,26 +5061,6 @@ public class DevicePolicyManager {
        return ret == null ? new Bundle() : ret;
    }

    /**
     * Called by the system to get the user restrictions for a user.
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
     * @param userHandle user id the admin is running as.
     *
     * @hide
     */
    public Bundle getUserRestrictionsForUser(@NonNull ComponentName admin, int userHandle) {
        Bundle ret = null;
        if (mService != null) {
            try {
                ret = mService.getUserRestrictionsForUser(admin, userHandle);
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
        return ret == null ? new Bundle() : ret;
    }

    /**
     * Called by profile or device owners to hide or unhide packages. When a package is hidden it is
     * unavailable for use, but the data and actual package file remain.
+0 −1
Original line number Diff line number Diff line
@@ -174,7 +174,6 @@ interface IDevicePolicyManager {

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

+22 −34
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.content.Intent;
import android.content.pm.IPackageManager;
import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
@@ -74,45 +73,31 @@ public class RestrictedLockUtils {
        if (dpm == null) {
            return null;
        }
        ComponentName deviceOwner = dpm.getDeviceOwnerComponentOnAnyUser();
        int deviceOwnerUserId = dpm.getDeviceOwnerUserId();
        boolean enforcedByDeviceOwner = false;
        if (deviceOwner != null && deviceOwnerUserId != UserHandle.USER_NULL) {
            Bundle enforcedRestrictions =
                    dpm.getUserRestrictionsForUser(deviceOwner, deviceOwnerUserId);
            if (enforcedRestrictions != null
                    && enforcedRestrictions.getBoolean(userRestriction, false)) {
                enforcedByDeviceOwner = true;
            }
        }

        ComponentName profileOwner = null;
        boolean enforcedByProfileOwner = false;
        if (userId != UserHandle.USER_NULL) {
            profileOwner = dpm.getProfileOwnerAsUser(userId);
            if (profileOwner != null) {
                Bundle enforcedRestrictions =
                        dpm.getUserRestrictionsForUser(profileOwner, userId);
                if (enforcedRestrictions != null
                        && enforcedRestrictions.getBoolean(userRestriction, false)) {
                    enforcedByProfileOwner = true;
                }
            }
        }
        UserManager um = UserManager.get(context);
        int restrictionSource = um.getUserRestrictionSource(userRestriction,
                UserHandle.of(userId));

        if (!enforcedByDeviceOwner && !enforcedByProfileOwner) {
        // If the restriction is not enforced or enforced only by system then return null
        if (restrictionSource == UserManager.RESTRICTION_NOT_SET
                || restrictionSource == UserManager.RESTRICTION_SOURCE_SYSTEM) {
            return null;
        }

        EnforcedAdmin admin = null;
        if (enforcedByDeviceOwner && enforcedByProfileOwner) {
            admin = new EnforcedAdmin();
        final boolean enforcedByProfileOwner =
                (restrictionSource & UserManager.RESTRICTION_SOURCE_PROFILE_OWNER) != 0;
        final boolean enforcedByDeviceOwner =
                (restrictionSource & UserManager.RESTRICTION_SOURCE_DEVICE_OWNER) != 0;
        if (enforcedByProfileOwner) {
            return getProfileOwner(context, userId);
        } else if (enforcedByDeviceOwner) {
            admin = new EnforcedAdmin(deviceOwner, deviceOwnerUserId);
        } else {
            admin = new EnforcedAdmin(profileOwner, userId);
            // When the restriction is enforced by device owner, return the device owner admin only
            // if the admin is for the {@param userId} otherwise return a default EnforcedAdmin.
            final EnforcedAdmin deviceOwner = getDeviceOwner(context);
            return deviceOwner.userId == userId
                    ? deviceOwner
                    : EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
        }
        return admin;
        return null;
    }

    public static boolean hasBaseUserRestriction(Context context,
@@ -479,6 +464,9 @@ public class RestrictedLockUtils {
    public static EnforcedAdmin checkIfMaximumTimeToLockIsSet(Context context) {
        final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
                Context.DEVICE_POLICY_SERVICE);
        if (dpm == null) {
            return null;
        }
        LockPatternUtils lockPatternUtils = new LockPatternUtils(context);
        EnforcedAdmin enforcedAdmin = null;
        final int userId = UserHandle.myUserId();
+0 −17
Original line number Diff line number Diff line
@@ -7314,23 +7314,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        }
    }

    @Override
    public Bundle getUserRestrictionsForUser(ComponentName who, int userHandle) {
        if (!mHasFeature) {
            return null;
        }
        Preconditions.checkNotNull(who, "ComponentName is null");
        enforceFullCrossUsersPermission(userHandle);
        enforceCanManageProfileAndDeviceOwners();
        synchronized (this) {
            ActiveAdmin activeAdmin = getActiveAdminUncheckedLocked(who, userHandle);
            if (activeAdmin == null) {
                return null;
            }
            return activeAdmin.userRestrictions;
        }
    }

    @Override
    public boolean setApplicationHidden(ComponentName who, String packageName,
            boolean hidden) {