diff options
3 files changed, 18 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java index ecc3d2da8226..174ecfa12ee6 100644 --- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java +++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java @@ -116,6 +116,7 @@ public abstract class BiometricServiceBase extends SystemService protected HashMap<Integer, PerformanceStats> mPerformanceMap = new HashMap<>(); // Transactions that make use of CryptoObjects are tracked by mCryptoPerformaceMap. protected HashMap<Integer, PerformanceStats> mCryptoPerformanceMap = new HashMap<>(); + protected int mHALDeathCount; protected class PerformanceStats { public int accept; // number of accepted biometrics @@ -596,6 +597,7 @@ public abstract class BiometricServiceBase extends SystemService public void serviceDied(long cookie) { Slog.e(getTag(), "HAL died"); mMetricsLogger.count(getMetrics().tagHalDied(), 1); + mHALDeathCount++; handleError(getHalDeviceId(), BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE, 0 /*vendorCode */); } diff --git a/services/core/java/com/android/server/biometrics/face/FaceService.java b/services/core/java/com/android/server/biometrics/face/FaceService.java index 5a9c1aca081a..a2aacdde4d9f 100644 --- a/services/core/java/com/android/server/biometrics/face/FaceService.java +++ b/services/core/java/com/android/server/biometrics/face/FaceService.java @@ -675,6 +675,12 @@ public class FaceService extends BiometricServiceBase { } @Override + public void serviceDied(long cookie) { + super.serviceDied(cookie); + mDaemon = null; + } + + @Override protected void updateActiveGroup(int userId, String clientPackage) { IBiometricsFace daemon = getFaceDaemon(); @@ -864,6 +870,8 @@ public class FaceService extends BiometricServiceBase { Slog.e(TAG, "dump formatting failure", e); } pw.println(dump); + pw.println("HAL Deaths: " + mHALDeathCount); + mHALDeathCount = 0; } private void dumpProto(FileDescriptor fd) { diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java index 1613dc97225b..3db6a74a1c6c 100644 --- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java @@ -777,6 +777,12 @@ public class FingerprintService extends BiometricServiceBase { } @Override + public void serviceDied(long cookie) { + super.serviceDied(cookie); + mDaemon = null; + } + + @Override protected void updateActiveGroup(int userId, String clientPackage) { IBiometricsFingerprint daemon = getFingerprintDaemon(); @@ -1074,6 +1080,8 @@ public class FingerprintService extends BiometricServiceBase { Slog.e(TAG, "dump formatting failure", e); } pw.println(dump); + pw.println("HAL Deaths: " + mHALDeathCount); + mHALDeathCount = 0; } private void dumpProto(FileDescriptor fd) { |