summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Mccloskey <joshmccloskey@google.com>2021-07-19 20:00:57 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-07-19 20:00:57 +0000
commit4438cf6799554ebe69088252c6da87d06063d1f7 (patch)
tree2d8f99d38806969b687a7481bc653325b9dc69dd
parentc4815d0f2d03ad5e08e1053d2f3431a788dc97ab (diff)
parent5afa7487dfe14e2272a7cf0f201c4f326dfe435f (diff)
Merge "Fixed double face auth on swipe" into sc-dev
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java20
2 files changed, 19 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt
index ff20805c5ea4..0785cc3c04d2 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt
@@ -23,5 +23,6 @@ data class KeyguardFaceListenModel(
val isLockIconPressed: Boolean,
val isScanningAllowedByStrongAuth: Boolean,
val isPrimaryUser: Boolean,
- val isSecureCameraLaunched: Boolean
+ val isSecureCameraLaunched: Boolean,
+ val isFaceAuthenticated: Boolean
)
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 3412c18e3103..8032839318e0 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -1058,9 +1058,18 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|| isSimPinSecure());
}
+ private boolean getIsFaceAuthenticated() {
+ boolean faceAuthenticated = false;
+ BiometricAuthenticated bioFaceAuthenticated = mUserFaceAuthenticated.get(getCurrentUser());
+ if (bioFaceAuthenticated != null) {
+ faceAuthenticated = bioFaceAuthenticated.mAuthenticated;
+ }
+ return faceAuthenticated;
+ }
+
private void requireStrongAuthIfAllLockedOut() {
final boolean faceLock =
- mFaceLockedOutPermanent || !shouldListenForFace();
+ (mFaceLockedOutPermanent || !shouldListenForFace()) && !getIsFaceAuthenticated();
final boolean fpLock =
mFingerprintLockedOutPermanent || !shouldListenForFingerprint(isUdfpsEnrolled());
@@ -2240,6 +2249,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
strongAuthAllowsScanning = false;
}
+ // If the face has recently been authenticated do not attempt to authenticate again.
+ boolean faceAuthenticated = getIsFaceAuthenticated();
+
// Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an
// instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
final boolean shouldListen =
@@ -2248,7 +2260,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
&& !mSwitchingUser && !isFaceDisabled(user) && becauseCannotSkipBouncer
&& !mKeyguardGoingAway && mBiometricEnabledForUser.get(user) && !mLockIconPressed
&& strongAuthAllowsScanning && mIsPrimaryUser
- && (!mSecureCameraLaunched || mOccludingAppRequestingFace);
+ && (!mSecureCameraLaunched || mOccludingAppRequestingFace)
+ && !faceAuthenticated;
// Aggregate relevant fields for debug logging.
if (DEBUG_FACE || DEBUG_SPEW) {
@@ -2269,7 +2282,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
mLockIconPressed,
strongAuthAllowsScanning,
mIsPrimaryUser,
- mSecureCameraLaunched);
+ mSecureCameraLaunched,
+ faceAuthenticated);
maybeLogFaceListenerModelData(model);
}