Add check for mandatory biometric flag
Flags: android.hardware.biometrics.flag.mandatory_biometrics
Fixes: 370757426
Test: atest UtilsTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5a867c0480b24c2e4d0b15fc58eaba6b890ee4d1)
Merged-In: I3886e3bf67d3d08d420b945931b6b1f6052c3a57
Change-Id: I3886e3bf67d3d08d420b945931b6b1f6052c3a57
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index de7bce7..8734136 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -253,9 +253,15 @@
// Check if any of the non-biometric and non-credential bits are set. If so, this is
// invalid.
- final int testBits = ~(Authenticators.DEVICE_CREDENTIAL
- | Authenticators.BIOMETRIC_MIN_STRENGTH
- | Authenticators.MANDATORY_BIOMETRICS);
+ final int testBits;
+ if (Flags.mandatoryBiometrics()) {
+ testBits = ~(Authenticators.DEVICE_CREDENTIAL
+ | Authenticators.BIOMETRIC_MIN_STRENGTH
+ | Authenticators.MANDATORY_BIOMETRICS);
+ } else {
+ testBits = ~(Authenticators.DEVICE_CREDENTIAL
+ | Authenticators.BIOMETRIC_MIN_STRENGTH);
+ }
if ((authenticators & testBits) != 0) {
Slog.e(BiometricService.TAG, "Non-biometric, non-credential bits found."
+ " Authenticators: " + authenticators);
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java b/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
index efc2d974..1bea371 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
@@ -217,7 +217,13 @@
doNothing().when(mContext).enforceCallingOrSelfPermission(
eq(SET_BIOMETRIC_DIALOG_ADVANCED), any());
- assertTrue(Utils.isValidAuthenticatorConfig(mContext, Authenticators.MANDATORY_BIOMETRICS));
+ if (Flags.mandatoryBiometrics()) {
+ assertTrue(Utils.isValidAuthenticatorConfig(mContext,
+ Authenticators.MANDATORY_BIOMETRICS));
+ } else {
+ assertFalse(Utils.isValidAuthenticatorConfig(mContext,
+ Authenticators.MANDATORY_BIOMETRICS));
+ }
// The rest of the bits are not allowed to integrate with the public APIs
for (int i = 8; i < 32; i++) {