From 75587638ff5224ff4674ba07b612fe7f6d249ac1 Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Wed, 6 Jan 2021 19:20:20 -0800 Subject: [PATCH] Updated Fingerprint enrollment logging Test: Verified regular fingerprint enrollment correctly logged enrollment. Test: Verified that the find fingerprint sensor activity no longer falsely reports a failed enrollment. Bug: 175316123 Fingerprint enrollment shows a find sensor screen which makes a call to FingerprintManager.enroll(), the purpose is to get the user to locate the sensor. The consequence was that logging built into the framework was incorrectly logging a failed enrollment after cancellation. Change-Id: I4777613fe521f04cc97c471e0a1e85e5809d7f06 --- .../fingerprint/FingerprintEnrollFindSensor.java | 1 + .../fingerprint/FingerprintEnrollSidecar.java | 15 +++++++++++++-- .../FingerprintEnrollEnrollingTest.java | 4 +++- .../FingerprintEnrollFindSensorTest.java | 5 +++-- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index 234666f520c..dc0928a1c6f 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -109,6 +109,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase { FingerprintEnrollEnrolling.TAG_SIDECAR); if (mSidecar == null) { mSidecar = new FingerprintEnrollSidecar(); + mSidecar.logMetrics(false); getSupportFragmentManager().beginTransaction() .add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR) .commitAllowingStateLoss(); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java index cbd9d4db241..73540c9e988 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java @@ -19,7 +19,6 @@ package com.android.settings.biometrics.fingerprint; import android.app.Activity; import android.app.settings.SettingsEnums; import android.hardware.fingerprint.FingerprintManager; -import android.os.UserHandle; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollSidecar; @@ -30,6 +29,7 @@ import com.android.settings.biometrics.BiometricEnrollSidecar; public class FingerprintEnrollSidecar extends BiometricEnrollSidecar { private FingerprintManager mFingerprintManager; + private boolean mShouldLogMetrics = true; @Override public void onAttach(Activity activity) { @@ -40,7 +40,18 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar { @Override protected void startEnrollment() { super.startEnrollment(); - mFingerprintManager.enroll(mToken, mEnrollmentCancel, mUserId, mEnrollmentCallback); + mFingerprintManager.enroll(mToken, mEnrollmentCancel, mUserId, mEnrollmentCallback, + mShouldLogMetrics); + } + + /** + * Sets the flag mShouldLogMetrics which controls whether or not + * logging of enrollment successes/failures will be recorded for + * this particular instance of enrollment. This is primarily used by + * the find sensor activity so that false negatives are not reported. + */ + public void logMetrics(boolean shouldLogMetrics) { + mShouldLogMetrics = shouldLogMetrics; } private FingerprintManager.EnrollmentCallback mEnrollmentCallback diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 47edb40c86a..41a55983f8b 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import android.content.Intent; @@ -95,7 +96,8 @@ public class FingerprintEnrollEnrollingTest { any(byte[].class), any(CancellationSignal.class), anyInt(), - callbackCaptor.capture()); + callbackCaptor.capture(), + eq(true)); return callbackCaptor.getValue(); } diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java index 465e73574da..f2ced9c4e96 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertWithMessage; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.robolectric.RuntimeEnvironment.application; @@ -30,7 +31,6 @@ import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback; import android.os.CancellationSignal; -import android.widget.Button; import com.android.settings.R; import com.android.settings.biometrics.BiometricEnrollBase; @@ -152,7 +152,8 @@ public class FingerprintEnrollFindSensorTest { any(byte[].class), any(CancellationSignal.class), anyInt(), - callbackCaptor.capture()); + callbackCaptor.capture(), + eq(false)); return callbackCaptor.getValue(); }