summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shawn Lin <shawnlin@google.com> 2024-08-01 08:07:57 +0000
committer Shawn Lin <shawnlin@google.com> 2024-08-15 04:45:12 +0000
commite71d37a03323c00cc4892c3fa3a398b31ec19ec6 (patch)
tree2199cca35b0b53037fad8d364f8c610c7f70afe4
parent409d712ec80100bdd51c11a510b94f08c55f3870 (diff)
Log fingerprint LOE error
Bug: 359103118 Test: atest FingerprintInternalCleanupClientTest BiometricLoggerTest Flag: com.android.server.biometrics.notify_fingerprints_loe Change-Id: I806141794896acd302809a3be73978dcfc9d1dd1
-rw-r--r--services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java8
-rw-r--r--services/core/java/com/android/server/biometrics/log/BiometricLogger.java9
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java11
5 files changed, 39 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java b/services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java
index f31b2e11b021..2c52e3d8ca67 100644
--- a/services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java
+++ b/services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java
@@ -241,6 +241,14 @@ public class BiometricFrameworkStatsLogger {
-1 /* sensorId */);
}
+ /** {@see FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED}. */
+ public void reportFingerprintsLoe(int statsModality) {
+ FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+ statsModality,
+ BiometricsProtoEnums.ISSUE_FINGERPRINTS_LOE,
+ -1 /* sensorId */);
+ }
+
/** {@see FrameworkStatsLog.BIOMETRIC_FRR_NOTIFICATION}. */
public void logFrameworkNotification(int action, int modality) {
FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_FRR_NOTIFICATION,
diff --git a/services/core/java/com/android/server/biometrics/log/BiometricLogger.java b/services/core/java/com/android/server/biometrics/log/BiometricLogger.java
index ff1e5d5f91e6..9351bc0811f2 100644
--- a/services/core/java/com/android/server/biometrics/log/BiometricLogger.java
+++ b/services/core/java/com/android/server/biometrics/log/BiometricLogger.java
@@ -296,6 +296,15 @@ public class BiometricLogger {
mSink.reportUnknownTemplateEnrolledFramework(mStatsModality);
}
+ /** Report unknown enrollment in framework settings */
+ public void logFingerprintsLoe() {
+ if (shouldSkipLogging()) {
+ return;
+ }
+
+ mSink.reportFingerprintsLoe(mStatsModality);
+ }
+
/**
* Get a callback to start/stop ALS capture when the client runs. Do not create
* multiple callbacks since there is at most one light sensor (they will all share
diff --git a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
index 77e27ba4df02..7bd905b4524a 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
@@ -161,6 +161,11 @@ public abstract class InternalCleanupClient<S extends BiometricAuthenticator.Ide
getLogger().logUnknownEnrollmentInHal();
+ if (mBiometricUtils.hasValidBiometricUserState(getContext(), getTargetUserId())
+ && Flags.notifyFingerprintsLoe()) {
+ getLogger().logFingerprintsLoe();
+ }
+
mCurrentTask.start(mRemoveCallback);
}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java b/services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java
index 238a9289c05b..8f23ab99ba7f 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java
@@ -236,6 +236,13 @@ public class BiometricLoggerTest {
}
@Test
+ public void testFingerprintsLoe() {
+ mLogger = createLogger();
+ mLogger.logFingerprintsLoe();
+ verify(mSink).reportFingerprintsLoe(eq(DEFAULT_MODALITY));
+ }
+
+ @Test
public void testALSCallback() {
mLogger = createLogger();
final CallbackWithProbe<Probe> callback =
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
index 242880ca49eb..7dcf8415f311 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
@@ -182,13 +182,22 @@ public class FingerprintInternalCleanupClientTest {
public void invalidBiometricUserState() throws Exception {
mClient = createClient();
+ final List<Fingerprint> templates = List.of(
+ new Fingerprint("one", 1, 1),
+ new Fingerprint("two", 2, 1),
+ new Fingerprint("three", 3, 1)
+ );
+
final List<Fingerprint> list = new ArrayList<>();
doReturn(true).when(mFingerprintUtils)
.hasValidBiometricUserState(mContext, 2);
doReturn(list).when(mFingerprintUtils).getBiometricsForUser(mContext, 2);
mClient.start(mCallback);
- mClient.onEnumerationResult(null, 0);
+ for (int i = templates.size() - 1; i >= 0; i--) {
+ mClient.getCurrentEnumerateClient().onEnumerationResult(templates.get(i), i);
+ }
+ verify(mLogger).logFingerprintsLoe();
verify(mFingerprintUtils).deleteStateForUser(2);
}