Merge "Listen to task stack only when AuthenticationClient is running" into pi-dev
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!");
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
index ac85484..fc8aace 100644
--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
@@ -259,11 +259,6 @@
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
mActivityManager = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
.getService();
- try {
- mActivityManager.registerTaskStackListener(mTaskStackListener);
- } catch (RemoteException e) {
- Slog.e(TAG, "Could not register task stack listener", e);
- }
}
@Override
@@ -859,6 +854,24 @@
receiver, mCurrentUserId, groupId, opId, restricted, opPackageName, bundle,
dialogReceiver, mStatusBarService) {
@Override
+ public void onStart() {
+ try {
+ mActivityManager.registerTaskStackListener(mTaskStackListener);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Could not register task stack listener", e);
+ }
+ }
+
+ @Override
+ public void onStop() {
+ try {
+ mActivityManager.unregisterTaskStackListener(mTaskStackListener);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Could not unregister task stack listener", e);
+ }
+ }
+
+ @Override
public int handleFailedAttempt() {
final int currentUser = ActivityManager.getCurrentUser();
mFailedAttempts.put(currentUser, mFailedAttempts.get(currentUser, 0) + 1);