From 750663c67b046c2b7a467d2de99a1c2feca56887 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Wed, 15 May 2019 12:17:38 -0700 Subject: 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 --- .../android/server/biometrics/BiometricService.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java index b9a6a1020a77..db17f8397ed4 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 @@ public class BiometricService extends SystemService { 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 @@ public class BiometricService extends SystemService { } 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) { -- cgit v1.2.3-59-g8ed1b