Listen to task stack only when AuthenticationClient is running
Fixes: 74559055
Test: With added logging in FingerprintService, tested with Keyguard
and FingerprintDialog apk
Change-Id: I795aa3641d2b83edc360e1979d6b508550e07669
diff --git a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
index d30b13c..a52dd0b 100644
--- a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
+++ b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
@@ -74,6 +74,17 @@
}
};
+ /**
+ * This method is called when authentication starts.
+ */
+ public abstract void onStart();
+
+ /**
+ * This method is called when a fingerprint is authenticated or authentication is stopped
+ * (cancelled by the user, or an error such as lockout has occurred).
+ */
+ public abstract void onStop();
+
public AuthenticationClient(Context context, long halDeviceId, IBinder token,
IFingerprintServiceReceiver receiver, int targetUserId, int groupId, long opId,
boolean restricted, String owner, Bundle bundle,
@@ -220,6 +231,7 @@
}
result |= true; // we have a valid fingerprint, done
resetFailedAttempts();
+ onStop();
}
return result;
}
@@ -234,6 +246,7 @@
Slog.w(TAG, "start authentication: no fingerprint HAL!");
return ERROR_ESRCH;
}
+ onStart();
try {
final int result = daemon.authenticate(mOpId, getGroupId());
if (result != 0) {
@@ -266,6 +279,7 @@
return 0;
}
+ onStop();
IBiometricsFingerprint daemon = getFingerprintDaemon();
if (daemon == null) {
Slog.w(TAG, "stopAuthentication: no fingerprint HAL!");