Initialize biometric settings for user
The settings cache was being set only when user changes or the settings
changed. The cache needs to be initialized if trying to read before
they are set.
Fixes: 132692298
Test: manual
Change-Id: I8a2b0c21e5cd569e87858d401f40dc6f84962111
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index b9a6a10..db17f83 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -475,7 +475,7 @@
DEFAULT_KEYGUARD_ENABLED ? 1 : 0 /* default */,
userId) != 0);
- if (userId == ActivityManager.getCurrentUser()) {
+ if (userId == ActivityManager.getCurrentUser() && !selfChange) {
notifyEnabledOnKeyguardCallbacks(userId);
}
} else if (FACE_UNLOCK_APP_ENABLED.equals(uri)) {
@@ -494,17 +494,25 @@
}
boolean getFaceEnabledOnKeyguard() {
- return mFaceEnabledOnKeyguard.getOrDefault(
- ActivityManager.getCurrentUser(), DEFAULT_KEYGUARD_ENABLED);
+ final int user = ActivityManager.getCurrentUser();
+ if (!mFaceEnabledOnKeyguard.containsKey(user)) {
+ onChange(true /* selfChange */, FACE_UNLOCK_KEYGUARD_ENABLED, user);
+ }
+ return mFaceEnabledOnKeyguard.get(user);
}
boolean getFaceEnabledForApps(int userId) {
+ if (!mFaceEnabledForApps.containsKey(userId)) {
+ onChange(true /* selfChange */, FACE_UNLOCK_APP_ENABLED, userId);
+ }
return mFaceEnabledForApps.getOrDefault(userId, DEFAULT_APP_ENABLED);
}
boolean getFaceAlwaysRequireConfirmation(int userId) {
- return mFaceAlwaysRequireConfirmation
- .getOrDefault(userId, DEFAULT_ALWAYS_REQUIRE_CONFIRMATION);
+ if (!mFaceAlwaysRequireConfirmation.containsKey(userId)) {
+ onChange(true /* selfChange */, FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION, userId);
+ }
+ return mFaceAlwaysRequireConfirmation.get(userId);
}
void notifyEnabledOnKeyguardCallbacks(int userId) {