From a900c1dd1b9ea1d7c1a7d8939918a4a34e566f8b Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Wed, 6 Dec 2023 22:24:19 +0000 Subject: [PATCH] Fixed biometric setting crash. Test: Verified test crashed without fix, and passed with fix Test: atest FingerprintSettingsFragmentTest Fixes: 315164185 Change-Id: I1d8ab32eef8578a6d35831aef46275a9732e497c --- .../biometrics/fingerprint/FingerprintSettings.java | 3 +++ .../fingerprint/FingerprintSettingsFragmentTest.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 308b3d50e2a..69043422d0f 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -93,6 +93,7 @@ import com.android.settingslib.widget.TwoTargetPreference; import com.google.android.setupdesign.util.DeviceHelper; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -876,6 +877,8 @@ public class FingerprintSettings extends SubSettings { @Override protected List createPreferenceControllers(Context context) { if (!isFingerprintHardwareDetected(context)) { + Log.e(TAG, "Fingerprint hardware is not detected"); + mControllers = Collections.emptyList(); return null; } diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java index 5e90e55fdd2..ff851eb10ee 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java @@ -262,6 +262,13 @@ public class FingerprintSettingsFragmentTest { mFragment.onResume(); } + @Test + public void testFragmentVisibleWhenNoHardwareDetected() { + doReturn(false).when(mFingerprintManager).isHardwareDetected(); + setUpFragment(false); + assertThat(mFragment.isVisible()).isTrue(); + } + private void setSensor(@FingerprintSensorProperties.SensorType int sensorType) { final ArrayList props = new ArrayList<>(); props.add(new FingerprintSensorPropertiesInternal(