Restart fingerprint auth on cancel.
Test: atest FingerprintSettingsFragmentTest Fixes: 336572954 Change-Id: Ie64d509caf052271a141e466f5c840e92f5dc119
This commit is contained in:
committed by
Joshua Mccloskey
parent
1eca5e767d
commit
4efd4c16f9
@@ -352,11 +352,6 @@ public class FingerprintSettings extends SubSettings {
|
||||
*/
|
||||
protected void handleError(int errMsgId, CharSequence msg) {
|
||||
switch (errMsgId) {
|
||||
case FingerprintManager.FINGERPRINT_ERROR_CANCELED:
|
||||
case FingerprintManager.FINGERPRINT_ERROR_USER_CANCELED:
|
||||
// Only happens if we get preempted by another activity, or canceled by the
|
||||
// user (e.g. swipe up to home). Ignored.
|
||||
return;
|
||||
case FingerprintManager.FINGERPRINT_ERROR_LOCKOUT:
|
||||
mInFingerprintLockout = true;
|
||||
// We've been locked out. Reset after 30s.
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
|
||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_REAR;
|
||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
||||
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
|
||||
@@ -33,13 +34,16 @@ import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.ComponentInfoInternal;
|
||||
import android.hardware.biometrics.SensorProperties;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorProperties;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
@@ -80,6 +84,7 @@ import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowSettingsPreferenceFragment.class, ShadowUtils.class, ShadowFragment.class,
|
||||
@@ -147,7 +152,6 @@ public class FingerprintSettingsFragmentTest {
|
||||
public void testCancellationSignalLifeCycle() {
|
||||
setUpFragment(false);
|
||||
|
||||
mFingerprintAuthenticateSidecar.setFingerprintManager(mFingerprintManager);
|
||||
|
||||
doNothing().when(mFingerprintManager).authenticate(any(),
|
||||
mCancellationSignalArgumentCaptor.capture(),
|
||||
@@ -213,6 +217,7 @@ public class FingerprintSettingsFragmentTest {
|
||||
doReturn(fragmentManager).when(mActivity).getSupportFragmentManager();
|
||||
|
||||
mFingerprintAuthenticateSidecar = new FingerprintAuthenticateSidecar();
|
||||
mFingerprintAuthenticateSidecar.setFingerprintManager(mFingerprintManager);
|
||||
doReturn(mFingerprintAuthenticateSidecar).when(fragmentManager).findFragmentByTag(
|
||||
"authenticate_sidecar");
|
||||
|
||||
@@ -246,4 +251,27 @@ public class FingerprintSettingsFragmentTest {
|
||||
true /* resetLockoutRequiresHardwareAuthToken */));
|
||||
doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAuthOnFragmentSetup() {
|
||||
doReturn(List.of(new Fingerprint("Finger 1", 1, 2, 3)))
|
||||
.when(mFingerprintManager).getEnrolledFingerprints(anyInt());
|
||||
setUpFragment(false, 1, TYPE_REAR);
|
||||
|
||||
verify(mFingerprintManager).authenticate(any(), any(),
|
||||
any(), any(), anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testErrorCancelledRestartsAuth() {
|
||||
doReturn(List.of(new Fingerprint("Finger 1", 1, 2, 3)))
|
||||
.when(mFingerprintManager).getEnrolledFingerprints(anyInt());
|
||||
setUpFragment(false, 1, TYPE_REAR);
|
||||
|
||||
// When we receive a cancel, we should restart auth.
|
||||
mFragment.handleError(FingerprintManager.FINGERPRINT_ERROR_CANCELED, "blah");
|
||||
|
||||
verify(mFingerprintManager, times(2)).authenticate(any(), any(),
|
||||
any(), any(), anyInt());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user