Merge "DPM: Allow Device Admin targeting P to set quality"

This commit is contained in:
Eran Messeri
2020-12-16 14:59:22 +00:00
committed by Android (Google) Code Review

View File

@@ -3373,6 +3373,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT, packageName, userId);
}
private boolean isPasswordLimitingAdminTargetingP(CallerIdentity caller) {
if (!caller.hasAdminComponent()) {
return false;
}
synchronized (getLockObject()) {
return getActiveAdminWithPolicyForUidLocked(
caller.getComponentName(), DeviceAdminInfo.USES_POLICY_LIMIT_PASSWORD,
caller.getUid()) != null;
}
}
@Override
public void setPasswordQuality(ComponentName who, int quality, boolean parent) {
if (!mHasFeature) {
@@ -3383,7 +3395,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
final CallerIdentity caller = getCallerIdentity(who);
Preconditions.checkCallAuthorization(
isProfileOwner(caller) || isDeviceOwner(caller) || isSystemUid(caller));
isProfileOwner(caller) || isDeviceOwner(caller) || isSystemUid(caller)
|| isPasswordLimitingAdminTargetingP(caller));
final boolean qualityMayApplyToParent =
canSetPasswordQualityOnParent(who.getPackageName(), caller.getUserId());