Merge "Allow udfps when strong auth is required" into sc-qpr1-dev

This commit is contained in:
TreeHugger Robot
2021-12-06 17:36:39 +00:00
committed by Android (Google) Code Review
4 changed files with 26 additions and 9 deletions

View File

@@ -43,8 +43,7 @@ data class KeyguardFingerprintListenModel(
val shouldListenForFingerprintAssistant: Boolean, val shouldListenForFingerprintAssistant: Boolean,
val switchingUser: Boolean, val switchingUser: Boolean,
val udfps: Boolean, val udfps: Boolean,
val userDoesNotHaveTrust: Boolean, val userDoesNotHaveTrust: Boolean
val userNeedsStrongAuth: Boolean
) : KeyguardListenModel() { ) : KeyguardListenModel() {
override val modality: Int = TYPE_FACE override val modality: Int = TYPE_FACE
} }

View File

@@ -2254,11 +2254,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
!(mFingerprintLockedOut && mBouncer && mCredentialAttempted); !(mFingerprintLockedOut && mBouncer && mCredentialAttempted);
final boolean isEncryptedOrLockdownForUser = isEncryptedOrLockdown(user); final boolean isEncryptedOrLockdownForUser = isEncryptedOrLockdown(user);
final boolean userNeedsStrongAuth = userNeedsStrongAuth();
final boolean shouldListenUdfpsState = !isUdfps final boolean shouldListenUdfpsState = !isUdfps
|| (!userCanSkipBouncer || (!userCanSkipBouncer
&& !isEncryptedOrLockdownForUser && !isEncryptedOrLockdownForUser
&& !userNeedsStrongAuth
&& userDoesNotHaveTrust && userDoesNotHaveTrust
&& !mFingerprintLockedOut); && !mFingerprintLockedOut);
@@ -2289,8 +2287,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
shouldListenForFingerprintAssistant, shouldListenForFingerprintAssistant,
mSwitchingUser, mSwitchingUser,
isUdfps, isUdfps,
userDoesNotHaveTrust, userDoesNotHaveTrust));
userNeedsStrongAuth));
} }
return shouldListen; return shouldListen;
@@ -2394,7 +2391,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|| (DEBUG_FINGERPRINT || (DEBUG_FINGERPRINT
&& model instanceof KeyguardFingerprintListenModel && model instanceof KeyguardFingerprintListenModel
&& mFingerprintRunningState != BIOMETRIC_STATE_RUNNING); && mFingerprintRunningState != BIOMETRIC_STATE_RUNNING);
if (notYetRunning && model.getListening()) { final boolean running =
(DEBUG_FACE
&& model instanceof KeyguardFaceListenModel
&& mFaceRunningState == BIOMETRIC_STATE_RUNNING)
|| (DEBUG_FINGERPRINT
&& model instanceof KeyguardFingerprintListenModel
&& mFingerprintRunningState == BIOMETRIC_STATE_RUNNING);
if (notYetRunning && model.getListening()
|| running && !model.getListening()) {
mListenModels.add(model); mListenModels.add(model);
} }
} }

View File

@@ -75,8 +75,7 @@ private fun fingerprintModel(user: Int) = KeyguardFingerprintListenModel(
shouldListenForFingerprintAssistant = false, shouldListenForFingerprintAssistant = false,
switchingUser = false, switchingUser = false,
udfps = false, udfps = false,
userDoesNotHaveTrust = false, userDoesNotHaveTrust = false
userNeedsStrongAuth = false
) )
private fun faceModel(user: Int) = KeyguardFaceListenModel( private fun faceModel(user: Int) = KeyguardFaceListenModel(

View File

@@ -19,6 +19,7 @@ package com.android.keyguard;
import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE;
import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -930,6 +931,19 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(false); assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(false);
} }
@Test
public void testStartUdfpsServiceStrongAuthRequiredAfterTimeout() {
// GIVEN status bar state is on the keyguard
mStatusBarStateListener.onStateChanged(StatusBarState.KEYGUARD);
// WHEN user loses smart unlock trust
when(mStrongAuthTracker.getStrongAuthForUser(KeyguardUpdateMonitor.getCurrentUser()))
.thenReturn(SOME_AUTH_REQUIRED_AFTER_USER_REQUEST);
// THEN we should still listen for udfps
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(true);
}
@Test @Test
public void testShouldNotListenForUdfps_whenTrustEnabled() { public void testShouldNotListenForUdfps_whenTrustEnabled() {
// GIVEN a "we should listen for udfps" state // GIVEN a "we should listen for udfps" state