Send FINGERPRINT_ERROR_LOCKOUT on some devices

For devices that don't support hardware lockout, send
FINGERPRINT_ERROR_LOCKOUT after the last unsuccessful
authentication attempt.

Fixes bug 28346640

Change-Id: Iae3eb8e422f09100a0229c350df9983af5fd8762
This commit is contained in:
Jim Miller
2016-05-03 18:35:18 -07:00
parent b2e36d7939
commit d197486f26

View File

@@ -74,12 +74,23 @@ public abstract class AuthenticationClient extends ClientMonitor {
} else {
result = true; // client not listening
}
if (fingerId == 0) {
if (!authenticated) {
if (receiver != null) {
FingerprintUtils.vibrateFingerprintError(getContext());
}
// allow system-defined limit of number of attempts before giving up
result |= handleFailedAttempt();
boolean inLockoutMode = handleFailedAttempt();
// send lockout event in case driver doesn't enforce it.
if (inLockoutMode) {
try {
Slog.w(TAG, "Forcing lockout (fp driver code should do this!)");
receiver.onError(getHalDeviceId(),
FingerprintManager.FINGERPRINT_ERROR_LOCKOUT);
} catch (RemoteException e) {
Slog.w(TAG, "Failed to notify lockout:", e);
}
}
result |= inLockoutMode;
} else {
if (receiver != null) {
FingerprintUtils.vibrateFingerprintSuccess(getContext());