Merge "Update to use ParentalControlsUtilsInternal for common logic" into sc-dev am: 44a0ddaa4c

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14972617

Change-Id: Ife10fc8ec4813deb4e36c8ef404c9ef5106de7b9
This commit is contained in:
Kevin Chyn
2021-06-16 06:33:09 +00:00
committed by Automerger Merge Worker

View File

@@ -20,6 +20,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.ParentalControlsUtilsInternal;
import android.os.Build; import android.os.Build;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
@@ -71,38 +72,12 @@ public class ParentalControlsUtils {
static RestrictedLockUtils.EnforcedAdmin parentConsentRequiredInternal( static RestrictedLockUtils.EnforcedAdmin parentConsentRequiredInternal(
@NonNull DevicePolicyManager dpm, @BiometricAuthenticator.Modality int modality, @NonNull DevicePolicyManager dpm, @BiometricAuthenticator.Modality int modality,
@NonNull UserHandle userHandle) { @NonNull UserHandle userHandle) {
final ComponentName cn = dpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle); if (ParentalControlsUtilsInternal.parentConsentRequired(dpm, modality, userHandle)) {
if (cn == null) { final ComponentName cn =
return null; ParentalControlsUtilsInternal.getSupervisionComponentName(dpm, userHandle);
}
final int keyguardDisabledFeatures = dpm.getKeyguardDisabledFeatures(cn);
final boolean dpmFpDisabled = containsFlag(keyguardDisabledFeatures,
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
final boolean dpmFaceDisabled = containsFlag(keyguardDisabledFeatures,
DevicePolicyManager.KEYGUARD_DISABLE_FACE);
final boolean dpmIrisDisabled = containsFlag(keyguardDisabledFeatures,
DevicePolicyManager.KEYGUARD_DISABLE_IRIS);
final boolean consentRequired;
if (containsFlag(modality, BiometricAuthenticator.TYPE_FINGERPRINT) && dpmFpDisabled) {
consentRequired = true;
} else if (containsFlag(modality, BiometricAuthenticator.TYPE_FACE) && dpmFaceDisabled) {
consentRequired = true;
} else if (containsFlag(modality, BiometricAuthenticator.TYPE_IRIS) && dpmIrisDisabled) {
consentRequired = true;
} else {
consentRequired = false;
}
if (consentRequired) {
return new RestrictedLockUtils.EnforcedAdmin(cn, userHandle); return new RestrictedLockUtils.EnforcedAdmin(cn, userHandle);
} else { } else {
return null; return null;
} }
} }
private static boolean containsFlag(int haystack, int needle) {
return (haystack & needle) != 0;
}
} }