diff options
| author | 2024-08-01 08:07:57 +0000 | |
|---|---|---|
| committer | 2024-08-15 04:45:12 +0000 | |
| commit | e71d37a03323c00cc4892c3fa3a398b31ec19ec6 (patch) | |
| tree | 2199cca35b0b53037fad8d364f8c610c7f70afe4 | |
| parent | 409d712ec80100bdd51c11a510b94f08c55f3870 (diff) | |
Log fingerprint LOE error
Bug: 359103118
Test: atest FingerprintInternalCleanupClientTest
BiometricLoggerTest
Flag: com.android.server.biometrics.notify_fingerprints_loe
Change-Id: I806141794896acd302809a3be73978dcfc9d1dd1
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); } |