From b8695b8e760abfe7376d688ebd66b29ff5157fdd Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Tue, 10 Jan 2023 22:36:30 +0000 Subject: [PATCH] Added performant auth feature Test: Manually verified in settings that the performant auth feature(fingerprint) is disabled by default Bug: 261216422 Bug: 265031172 Change-Id: I6422b12f801d038fa514758eca34efcbfdeef27a --- res/values/strings.xml | 4 ++-- ...ireScreenOnToAuthPreferenceController.java | 21 ++++++++++++------- ...creenOnToAuthPreferenceControllerTest.java | 4 ++-- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4839b68e4ff..d105d784c1d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1287,9 +1287,9 @@ Now you can use your fingerprint to unlock your phone or verify it\u2019s you, like when you sign in to apps or approve a purchase - Unlock only when screen is on + Touch to unlock anytime - The screen must be on before you can unlock with your fingerprint. This makes accidental unlocking less likely. + Touch the sensor to unlock, even when the screen is off. This makes accidental unlocking more likely. Screen, Unlock diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java index 5b183c1433f..65070833e09 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java @@ -51,21 +51,26 @@ public class FingerprintSettingsRequireScreenOnToAuthPreferenceController } else if (getRestrictingAdmin() != null) { return false; } - int defaultValue = mContext.getResources().getBoolean( - com.android.internal.R.bool.config_requireScreenOnToAuthEnabled) ? 1 : 0; - - return Settings.Secure.getIntForUser( + int toReturn = Settings.Secure.getIntForUser( mContext.getContentResolver(), - Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED, - defaultValue, - getUserHandle()) != 0; + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, + -1, + getUserHandle()); + if (toReturn == -1) { + toReturn = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_requireScreenOnToAuthEnabled) ? 1 : 0; + Settings.Secure.putIntForUser(mContext.getContentResolver(), + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, toReturn, getUserHandle()); + } + + return toReturn == 1; } @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putIntForUser( mContext.getContentResolver(), - Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED, + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, isChecked ? 1 : 0, getUserHandle()); return true; diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceControllerTest.java index ff74d59782a..b6df62eeff7 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceControllerTest.java @@ -81,12 +81,12 @@ public class FingerprintSettingsRequireScreenOnToAuthPreferenceControllerTest { @Test public void onPreferenceChange_settingIsUpdated() { boolean state = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED, 1) != 0; + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, 1) != 0; assertThat(mController.isChecked()).isFalse(); assertThat(mController.onPreferenceChange(mPreference, !state)).isTrue(); boolean newState = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED, 1) != 0; + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, 1) != 0; assertThat(newState).isEqualTo(!state); }