Merge changes I171604ee,I81d648e5 into tm-dev am: bf0730ed68
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19043505 Change-Id: Iecce2fedddf1beddea8cdc9dc21a6d064cf42a66 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -538,13 +538,12 @@ public final class AuthSession implements IBinder.DeathRecipient {
|
|||||||
|
|
||||||
void onDialogAnimatedIn() {
|
void onDialogAnimatedIn() {
|
||||||
if (mState != STATE_AUTH_STARTED) {
|
if (mState != STATE_AUTH_STARTED) {
|
||||||
Slog.w(TAG, "onDialogAnimatedIn, unexpected state: " + mState);
|
Slog.e(TAG, "onDialogAnimatedIn, unexpected state: " + mState);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mState = STATE_AUTH_STARTED_UI_SHOWING;
|
mState = STATE_AUTH_STARTED_UI_SHOWING;
|
||||||
|
|
||||||
startAllPreparedFingerprintSensors();
|
startAllPreparedFingerprintSensors();
|
||||||
mState = STATE_AUTH_STARTED_UI_SHOWING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTryAgainPressed() {
|
void onTryAgainPressed() {
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
|
|||||||
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
|
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
|
||||||
import static android.hardware.biometrics.BiometricPrompt.DISMISSED_REASON_NEGATIVE;
|
import static android.hardware.biometrics.BiometricPrompt.DISMISSED_REASON_NEGATIVE;
|
||||||
|
|
||||||
import static com.android.server.biometrics.BiometricServiceStateProto.*;
|
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_CALLED;
|
||||||
|
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_STARTED;
|
||||||
|
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_STARTED_UI_SHOWING;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertEquals;
|
import static junit.framework.Assert.assertEquals;
|
||||||
import static junit.framework.Assert.assertFalse;
|
import static junit.framework.Assert.assertFalse;
|
||||||
@@ -32,6 +34,8 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
|||||||
import static org.mockito.ArgumentMatchers.anyLong;
|
import static org.mockito.ArgumentMatchers.anyLong;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -279,6 +283,43 @@ public class AuthSessionTest {
|
|||||||
session.mPreAuthInfo.eligibleSensors.get(fingerprintSensorId).getSensorState());
|
session.mPreAuthInfo.eligibleSensors.get(fingerprintSensorId).getSensorState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnDialogAnimatedInDoesNothingDuringInvalidState() throws Exception {
|
||||||
|
setupFingerprint(0 /* id */, FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
|
||||||
|
final long operationId = 123;
|
||||||
|
final int userId = 10;
|
||||||
|
|
||||||
|
final AuthSession session = createAuthSession(mSensors,
|
||||||
|
false /* checkDevicePolicyManager */,
|
||||||
|
Authenticators.BIOMETRIC_STRONG,
|
||||||
|
TEST_REQUEST_ID,
|
||||||
|
operationId,
|
||||||
|
userId);
|
||||||
|
final IBiometricAuthenticator impl = session.mPreAuthInfo.eligibleSensors.get(0).impl;
|
||||||
|
|
||||||
|
session.goToInitialState();
|
||||||
|
for (BiometricSensor sensor : session.mPreAuthInfo.eligibleSensors) {
|
||||||
|
assertEquals(BiometricSensor.STATE_WAITING_FOR_COOKIE, sensor.getSensorState());
|
||||||
|
session.onCookieReceived(
|
||||||
|
session.mPreAuthInfo.eligibleSensors.get(sensor.id).getCookie());
|
||||||
|
}
|
||||||
|
assertTrue(session.allCookiesReceived());
|
||||||
|
assertEquals(STATE_AUTH_STARTED, session.getState());
|
||||||
|
verify(impl, never()).startPreparedClient(anyInt());
|
||||||
|
|
||||||
|
// First invocation should start the client monitor.
|
||||||
|
session.onDialogAnimatedIn();
|
||||||
|
assertEquals(STATE_AUTH_STARTED_UI_SHOWING, session.getState());
|
||||||
|
verify(impl).startPreparedClient(anyInt());
|
||||||
|
|
||||||
|
// Subsequent invocations should not start the client monitor again.
|
||||||
|
session.onDialogAnimatedIn();
|
||||||
|
session.onDialogAnimatedIn();
|
||||||
|
session.onDialogAnimatedIn();
|
||||||
|
assertEquals(STATE_AUTH_STARTED_UI_SHOWING, session.getState());
|
||||||
|
verify(impl, times(1)).startPreparedClient(anyInt());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCancelAuthentication_whenStateAuthCalled_invokesCancel()
|
public void testCancelAuthentication_whenStateAuthCalled_invokesCancel()
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
|
|||||||
Reference in New Issue
Block a user