From 3c57fcde327b7898f08139a01dc878d0dfc8b946 Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Thu, 7 Mar 2024 00:33:49 +0000 Subject: [PATCH] Fixed NPE in FingerprintEnrollIntro Test: atest FingerprintEnrollIntroductionTest Fixes: 317515741 Change-Id: Icc4e5cd4fbfea6828684ce6c8fc30acaabe5d315 --- .../FingerprintEnrollIntroduction.java | 3 +++ .../FingerprintEnrollIntroductionTest.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java index f92cfbf6696..26965fae758 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java @@ -340,6 +340,9 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { final List props = mFingerprintManager.getSensorPropertiesInternal(); // This will need to be updated for devices with multiple fingerprint sensors + if (props == null || props.isEmpty()) { + return R.string.fingerprint_intro_error_unknown; + } final int max = props.get(0).maxEnrollmentsPerUser; final int numEnrolledFingerprints = mFingerprintManager.getEnrolledFingerprints(mUserId).size(); diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java index 89e70d2990f..99d519a9e0b 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java @@ -252,6 +252,24 @@ public class FingerprintEnrollIntroductionTest { assertThat(result).isEqualTo(R.string.fingerprint_intro_error_max); } + @Test + public void intro_CheckNullPropsReturnsErrorString() { + setupFingerprintEnrollIntroWith(newTokenOnlyIntent()); + when(mFingerprintManager.getSensorPropertiesInternal()).thenReturn(null); + final int result = mFingerprintEnrollIntroduction.checkMaxEnrolled(); + + assertThat(result).isEqualTo(R.string.fingerprint_intro_error_unknown); + } + + @Test + public void intro_CheckEmptyPropsReturnsErrorString() { + setupFingerprintEnrollIntroWith(newTokenOnlyIntent()); + when(mFingerprintManager.getSensorPropertiesInternal()).thenReturn(List.of()); + final int result = mFingerprintEnrollIntroduction.checkMaxEnrolled(); + + assertThat(result).isEqualTo(R.string.fingerprint_intro_error_unknown); + } + @Test public void intro_CheckGenerateChallenge() { setupFingerprintEnrollIntroWith(newGkPwHandleAndFromSettingsIntent());