Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e71d37a0 authored by Shawn Lin's avatar Shawn Lin
Browse files

Log fingerprint LOE error

Bug: 359103118
Test: atest FingerprintInternalCleanupClientTest
            BiometricLoggerTest
Flag: com.android.server.biometrics.notify_fingerprints_loe
Change-Id: I806141794896acd302809a3be73978dcfc9d1dd1
parent 409d712e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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,
+9 −0
Original line number Diff line number Diff line
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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);
    }

+7 −0
Original line number Diff line number Diff line
@@ -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();
+10 −1
Original line number Diff line number Diff line
@@ -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);
    }