Loading services/core/java/com/android/server/biometrics/PreAuthInfo.java +21 −4 Original line number Diff line number Diff line Loading @@ -259,6 +259,21 @@ class PreAuthInfo { this.confirmationRequested = confirmationRequested; } private Pair<BiometricSensor, Integer> calculateErrorByPriority() { // If the caller requested STRONG, and the device contains both STRONG and non-STRONG // sensors, prioritize BIOMETRIC_NOT_ENROLLED over the weak sensor's // BIOMETRIC_INSUFFICIENT_STRENGTH error. Pretty sure we can always prioritize // BIOMETRIC_NOT_ENROLLED over any other error (unless of course its calculation is // wrong, in which case we should fix that instead). for (Pair<BiometricSensor, Integer> pair : ineligibleSensors) { if (pair.second == BIOMETRIC_NOT_ENROLLED) { return pair; } } return ineligibleSensors.get(0); } /** * With {@link PreAuthInfo} generated with the requested authenticators from the public API * surface, combined with the actual sensor/credential and user/system settings, calculate the Loading @@ -281,8 +296,9 @@ class PreAuthInfo { } else { // Pick the first sensor error if it exists if (!ineligibleSensors.isEmpty()) { modality |= ineligibleSensors.get(0).first.modality; status = ineligibleSensors.get(0).second; final Pair<BiometricSensor, Integer> pair = calculateErrorByPriority(); modality |= pair.first.modality; status = pair.second; } else { modality |= TYPE_CREDENTIAL; status = CREDENTIAL_NOT_ENROLLED; Loading @@ -297,8 +313,9 @@ class PreAuthInfo { } else { // Pick the first sensor error if it exists if (!ineligibleSensors.isEmpty()) { modality |= ineligibleSensors.get(0).first.modality; status = ineligibleSensors.get(0).second; final Pair<BiometricSensor, Integer> pair = calculateErrorByPriority(); modality |= pair.first.modality; status = pair.second; } else { modality |= TYPE_NONE; status = BIOMETRIC_NO_HARDWARE; Loading Loading
services/core/java/com/android/server/biometrics/PreAuthInfo.java +21 −4 Original line number Diff line number Diff line Loading @@ -259,6 +259,21 @@ class PreAuthInfo { this.confirmationRequested = confirmationRequested; } private Pair<BiometricSensor, Integer> calculateErrorByPriority() { // If the caller requested STRONG, and the device contains both STRONG and non-STRONG // sensors, prioritize BIOMETRIC_NOT_ENROLLED over the weak sensor's // BIOMETRIC_INSUFFICIENT_STRENGTH error. Pretty sure we can always prioritize // BIOMETRIC_NOT_ENROLLED over any other error (unless of course its calculation is // wrong, in which case we should fix that instead). for (Pair<BiometricSensor, Integer> pair : ineligibleSensors) { if (pair.second == BIOMETRIC_NOT_ENROLLED) { return pair; } } return ineligibleSensors.get(0); } /** * With {@link PreAuthInfo} generated with the requested authenticators from the public API * surface, combined with the actual sensor/credential and user/system settings, calculate the Loading @@ -281,8 +296,9 @@ class PreAuthInfo { } else { // Pick the first sensor error if it exists if (!ineligibleSensors.isEmpty()) { modality |= ineligibleSensors.get(0).first.modality; status = ineligibleSensors.get(0).second; final Pair<BiometricSensor, Integer> pair = calculateErrorByPriority(); modality |= pair.first.modality; status = pair.second; } else { modality |= TYPE_CREDENTIAL; status = CREDENTIAL_NOT_ENROLLED; Loading @@ -297,8 +313,9 @@ class PreAuthInfo { } else { // Pick the first sensor error if it exists if (!ineligibleSensors.isEmpty()) { modality |= ineligibleSensors.get(0).first.modality; status = ineligibleSensors.get(0).second; final Pair<BiometricSensor, Integer> pair = calculateErrorByPriority(); modality |= pair.first.modality; status = pair.second; } else { modality |= TYPE_NONE; status = BIOMETRIC_NO_HARDWARE; Loading