Loading services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java +8 −0 Original line number Diff line number Diff line Loading @@ -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, Loading services/core/java/com/android/server/biometrics/log/BiometricLogger.java +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,13 @@ public class BiometricLoggerTest { verify(mSink).reportUnknownTemplateEnrolledFramework(eq(DEFAULT_MODALITY)); } @Test public void testFingerprintsLoe() { mLogger = createLogger(); mLogger.logFingerprintsLoe(); verify(mSink).reportFingerprintsLoe(eq(DEFAULT_MODALITY)); } @Test public void testALSCallback() { mLogger = createLogger(); Loading services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading
services/core/java/com/android/server/biometrics/log/BiometricFrameworkStatsLogger.java +8 −0 Original line number Diff line number Diff line Loading @@ -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, Loading
services/core/java/com/android/server/biometrics/log/BiometricLogger.java +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading
services/tests/servicestests/src/com/android/server/biometrics/log/BiometricLoggerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,13 @@ public class BiometricLoggerTest { verify(mSink).reportUnknownTemplateEnrolledFramework(eq(DEFAULT_MODALITY)); } @Test public void testFingerprintsLoe() { mLogger = createLogger(); mLogger.logFingerprintsLoe(); verify(mSink).reportFingerprintsLoe(eq(DEFAULT_MODALITY)); } @Test public void testALSCallback() { mLogger = createLogger(); Loading
services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading