Merge "RESTRICT AUTOMERGE Update FP listening state on keyguardGoingAway" into tm-qpr-dev

This commit is contained in:
Beverly Tai
2023-01-11 20:26:35 +00:00
committed by Android (Google) Code Review
2 changed files with 67 additions and 11 deletions

View File

@@ -712,8 +712,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
*/ */
public void setKeyguardGoingAway(boolean goingAway) { public void setKeyguardGoingAway(boolean goingAway) {
mKeyguardGoingAway = goingAway; mKeyguardGoingAway = goingAway;
// This is set specifically to stop face authentication from running. if (mKeyguardGoingAway) {
updateBiometricListeningState(BIOMETRIC_ACTION_STOP, FACE_AUTH_STOPPED_KEYGUARD_GOING_AWAY); updateFaceListeningState(BIOMETRIC_ACTION_STOP,
FACE_AUTH_STOPPED_KEYGUARD_GOING_AWAY);
}
updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
} }
/** /**
@@ -1951,9 +1954,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
cb.onFinishedGoingToSleep(arg1); cb.onFinishedGoingToSleep(arg1);
} }
} }
// This is set specifically to stop face authentication from running. updateFaceListeningState(BIOMETRIC_ACTION_STOP,
updateBiometricListeningState(BIOMETRIC_ACTION_STOP,
FACE_AUTH_STOPPED_FINISHED_GOING_TO_SLEEP); FACE_AUTH_STOPPED_FINISHED_GOING_TO_SLEEP);
updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
} }
private void handleScreenTurnedOff() { private void handleScreenTurnedOff() {
@@ -2719,7 +2722,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
mFingerprintInteractiveToAuthProvider != null && mFingerprintInteractiveToAuthProvider != null &&
mFingerprintInteractiveToAuthProvider.isEnabled(getCurrentUser()); mFingerprintInteractiveToAuthProvider.isEnabled(getCurrentUser());
shouldListenSideFpsState = shouldListenSideFpsState =
interactiveToAuthEnabled ? isDeviceInteractive() : true; interactiveToAuthEnabled ? isDeviceInteractive() && !mGoingToSleep : true;
} }
boolean shouldListen = shouldListenKeyguardState && shouldListenUserState boolean shouldListen = shouldListenKeyguardState && shouldListenUserState

View File

@@ -92,6 +92,7 @@ import android.os.PowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings;
import android.service.dreams.IDreamManager; import android.service.dreams.IDreamManager;
import android.service.trust.TrustAgentService; import android.service.trust.TrustAgentService;
import android.telephony.ServiceState; import android.telephony.ServiceState;
@@ -1254,7 +1255,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
} }
@Test @Test
public void testStartsListeningForSfps_whenKeyguardIsVisible_ifRequireScreenOnToAuthEnabled() public void startsListeningForSfps_whenKeyguardIsVisible_ifRequireInteractiveToAuthEnabled()
throws RemoteException { throws RemoteException {
// SFPS supported and enrolled // SFPS supported and enrolled
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>(); final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
@@ -1262,12 +1263,9 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
when(mAuthController.getSfpsProps()).thenReturn(props); when(mAuthController.getSfpsProps()).thenReturn(props);
when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true); when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true);
// WHEN require screen on to auth is disabled, and keyguard is not awake // WHEN require interactive to auth is disabled, and keyguard is not awake
when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(false); when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(false);
mContext.getOrCreateTestableResources().addOverride(
com.android.internal.R.bool.config_requireScreenOnToAuthEnabled, true);
// Preconditions for sfps auth to run // Preconditions for sfps auth to run
keyguardNotGoingAway(); keyguardNotGoingAway();
currentUserIsPrimary(); currentUserIsPrimary();
@@ -1282,7 +1280,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
// THEN we should listen for sfps when screen off, because require screen on is disabled // THEN we should listen for sfps when screen off, because require screen on is disabled
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue(); assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue();
// WHEN require screen on to auth is enabled, and keyguard is not awake // WHEN require interactive to auth is enabled, and keyguard is not awake
when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(true); when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(true);
// THEN we shouldn't listen for sfps when screen off, because require screen on is enabled // THEN we shouldn't listen for sfps when screen off, because require screen on is enabled
@@ -1297,6 +1295,61 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue(); assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue();
} }
@Test
public void notListeningForSfps_whenGoingToSleep_ifRequireInteractiveToAuthEnabled()
throws RemoteException {
// GIVEN SFPS supported and enrolled
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
props.add(newFingerprintSensorPropertiesInternal(TYPE_POWER_BUTTON));
when(mAuthController.getSfpsProps()).thenReturn(props);
when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true);
// GIVEN Preconditions for sfps auth to run
keyguardNotGoingAway();
currentUserIsPrimary();
currentUserDoesNotHaveTrust();
biometricsNotDisabledThroughDevicePolicyManager();
biometricsEnabledForCurrentUser();
userNotCurrentlySwitching();
statusBarShadeIsLocked();
// WHEN require interactive to auth is enabled & keyguard is going to sleep
when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(true);
deviceGoingToSleep();
mTestableLooper.processAllMessages();
// THEN we should NOT listen for sfps because device is going to sleep
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isFalse();
}
@Test
public void listeningForSfps_whenGoingToSleep_ifRequireInteractiveToAuthDisabled()
throws RemoteException {
// GIVEN SFPS supported and enrolled
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
props.add(newFingerprintSensorPropertiesInternal(TYPE_POWER_BUTTON));
when(mAuthController.getSfpsProps()).thenReturn(props);
when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true);
// GIVEN Preconditions for sfps auth to run
keyguardNotGoingAway();
currentUserIsPrimary();
currentUserDoesNotHaveTrust();
biometricsNotDisabledThroughDevicePolicyManager();
biometricsEnabledForCurrentUser();
userNotCurrentlySwitching();
statusBarShadeIsLocked();
// WHEN require interactive to auth is disabled & keyguard is going to sleep
when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(false);
deviceGoingToSleep();
mTestableLooper.processAllMessages();
// THEN we should listen for sfps because screen on to auth is disabled
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue();
}
private FingerprintSensorPropertiesInternal newFingerprintSensorPropertiesInternal( private FingerprintSensorPropertiesInternal newFingerprintSensorPropertiesInternal(
@FingerprintSensorProperties.SensorType int sensorType) { @FingerprintSensorProperties.SensorType int sensorType) {