Merge "Refine get props inside FingerprintRepository"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b2e00d2f0a
@@ -24,6 +24,8 @@ import android.content.res.Resources;
|
|||||||
import android.hardware.fingerprint.Fingerprint;
|
import android.hardware.fingerprint.Fingerprint;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
|
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -39,10 +41,21 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class FingerprintRepository {
|
public class FingerprintRepository {
|
||||||
|
|
||||||
|
private static final String TAG = "FingerprintRepository";
|
||||||
@NonNull private final FingerprintManager mFingerprintManager;
|
@NonNull private final FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
|
private List<FingerprintSensorPropertiesInternal> mSensorPropertiesCache;
|
||||||
|
|
||||||
public FingerprintRepository(@NonNull FingerprintManager fingerprintManager) {
|
public FingerprintRepository(@NonNull FingerprintManager fingerprintManager) {
|
||||||
mFingerprintManager = fingerprintManager;
|
mFingerprintManager = fingerprintManager;
|
||||||
|
mFingerprintManager.addAuthenticatorsRegisteredCallback(
|
||||||
|
new IFingerprintAuthenticatorsRegisteredCallback.Stub() {
|
||||||
|
@Override
|
||||||
|
public void onAllAuthenticatorsRegistered(
|
||||||
|
List<FingerprintSensorPropertiesInternal> sensors) {
|
||||||
|
mSensorPropertiesCache = sensors;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,9 +99,12 @@ public class FingerprintRepository {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private FingerprintSensorPropertiesInternal getFirstFingerprintSensorPropertiesInternal() {
|
private FingerprintSensorPropertiesInternal getFirstFingerprintSensorPropertiesInternal() {
|
||||||
// TODO(b/264827022) use API addAuthenticatorsRegisteredCallback
|
final List<FingerprintSensorPropertiesInternal> props = mSensorPropertiesCache;
|
||||||
final List<FingerprintSensorPropertiesInternal> props =
|
if (props == null) {
|
||||||
mFingerprintManager.getSensorPropertiesInternal();
|
// Handle this case if it really happens
|
||||||
|
Log.e(TAG, "Sensor properties cache is null");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return props.size() > 0 ? props.get(0) : null;
|
return props.size() > 0 ? props.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -23,24 +23,19 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFP
|
|||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC;
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC;
|
||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UNKNOWN;
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UNKNOWN;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.newFingerprintRepository;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.setupFingerprintEnrolledFingerprints;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.setupSuwMaxFingerprintsEnrollable;
|
||||||
|
|
||||||
import static org.mockito.Mockito.when;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.hardware.biometrics.SensorProperties;
|
|
||||||
import android.hardware.fingerprint.Fingerprint;
|
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
import android.hardware.fingerprint.FingerprintSensorProperties;
|
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
import com.android.settings.testutils.ResourcesUtils;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -49,8 +44,6 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class FingerprintRepositoryTest {
|
public class FingerprintRepositoryTest {
|
||||||
|
|
||||||
@@ -60,114 +53,88 @@ public class FingerprintRepositoryTest {
|
|||||||
@Mock private FingerprintManager mFingerprintManager;
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private FingerprintRepository mFingerprintRepository;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = ApplicationProvider.getApplicationContext();
|
mContext = ApplicationProvider.getApplicationContext();
|
||||||
mFingerprintRepository = new FingerprintRepository(mFingerprintManager);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forUnknownSensor() {
|
public void testCanAssumeSensorType_forUnknownSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UNKNOWN, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isFalse();
|
TYPE_UNKNOWN, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isFalse();
|
assertThat(repository.canAssumeUdfps()).isFalse();
|
||||||
|
assertThat(repository.canAssumeSfps()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forRearSensor() {
|
public void testCanAssumeSensorType_forRearSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_REAR, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isFalse();
|
TYPE_REAR, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isFalse();
|
assertThat(repository.canAssumeUdfps()).isFalse();
|
||||||
|
assertThat(repository.canAssumeSfps()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forUdfpsUltrasonicSensor() {
|
public void testCanAssumeSensorType_forUdfpsUltrasonicSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isTrue();
|
TYPE_UDFPS_ULTRASONIC, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isFalse();
|
assertThat(repository.canAssumeUdfps()).isTrue();
|
||||||
|
assertThat(repository.canAssumeSfps()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forUdfpsOpticalSensor() {
|
public void testCanAssumeSensorType_forUdfpsOpticalSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UDFPS_OPTICAL, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isTrue();
|
TYPE_UDFPS_OPTICAL, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isFalse();
|
assertThat(repository.canAssumeUdfps()).isTrue();
|
||||||
|
assertThat(repository.canAssumeSfps()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forPowerButtonSensor() {
|
public void testCanAssumeSensorType_forPowerButtonSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_POWER_BUTTON, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isFalse();
|
TYPE_POWER_BUTTON, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isTrue();
|
assertThat(repository.canAssumeUdfps()).isFalse();
|
||||||
|
assertThat(repository.canAssumeSfps()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCanAssumeSensorType_forHomeButtonSensor() {
|
public void testCanAssumeSensorType_forHomeButtonSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_HOME_BUTTON, 1);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.canAssumeUdfps()).isFalse();
|
TYPE_HOME_BUTTON, 1);
|
||||||
assertThat(mFingerprintRepository.canAssumeSfps()).isFalse();
|
assertThat(repository.canAssumeUdfps()).isFalse();
|
||||||
|
assertThat(repository.canAssumeSfps()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetMaxFingerprints() {
|
public void testGetMaxFingerprints() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UNKNOWN, 999);
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
assertThat(mFingerprintRepository.getMaxFingerprints()).isEqualTo(999);
|
TYPE_UNKNOWN, 999);
|
||||||
|
assertThat(repository.getMaxFingerprints()).isEqualTo(999);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetNumOfEnrolledFingerprintsSize() {
|
public void testGetNumOfEnrolledFingerprintsSize() {
|
||||||
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
|
TYPE_UNKNOWN, 999);
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, 10, 3);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, 10, 3);
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, 22, 99);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, 22, 99);
|
||||||
|
|
||||||
assertThat(mFingerprintRepository.getNumOfEnrolledFingerprintsSize(10)).isEqualTo(3);
|
assertThat(repository.getNumOfEnrolledFingerprintsSize(10)).isEqualTo(3);
|
||||||
assertThat(mFingerprintRepository.getNumOfEnrolledFingerprintsSize(22)).isEqualTo(99);
|
assertThat(repository.getNumOfEnrolledFingerprintsSize(22)).isEqualTo(99);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetMaxFingerprintsInSuw() {
|
public void testGetMaxFingerprintsInSuw() {
|
||||||
|
final FingerprintRepository repository = newFingerprintRepository(mFingerprintManager,
|
||||||
|
TYPE_UNKNOWN, 999);
|
||||||
setupSuwMaxFingerprintsEnrollable(mContext, mResources, 333);
|
setupSuwMaxFingerprintsEnrollable(mContext, mResources, 333);
|
||||||
assertThat(mFingerprintRepository.getMaxFingerprintsInSuw(mResources))
|
assertThat(repository.getMaxFingerprintsInSuw(mResources))
|
||||||
.isEqualTo(333);
|
.isEqualTo(333);
|
||||||
|
|
||||||
setupSuwMaxFingerprintsEnrollable(mContext, mResources, 20);
|
setupSuwMaxFingerprintsEnrollable(mContext, mResources, 20);
|
||||||
assertThat(mFingerprintRepository.getMaxFingerprintsInSuw(mResources)).isEqualTo(20);
|
assertThat(repository.getMaxFingerprintsInSuw(mResources)).isEqualTo(20);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setupSuwMaxFingerprintsEnrollable(
|
|
||||||
@NonNull Context context,
|
|
||||||
@NonNull Resources mockedResources,
|
|
||||||
int numOfFp) {
|
|
||||||
final int resId = ResourcesUtils.getResourcesId(context, "integer",
|
|
||||||
"suw_max_fingerprints_enrollable");
|
|
||||||
when(mockedResources.getInteger(resId)).thenReturn(numOfFp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setupFingerprintFirstSensor(
|
|
||||||
@NonNull FingerprintManager mockedFingerprintManager,
|
|
||||||
@FingerprintSensorProperties.SensorType int sensorType,
|
|
||||||
int maxEnrollmentsPerUser) {
|
|
||||||
|
|
||||||
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
|
||||||
props.add(new FingerprintSensorPropertiesInternal(
|
|
||||||
0 /* sensorId */,
|
|
||||||
SensorProperties.STRENGTH_STRONG,
|
|
||||||
maxEnrollmentsPerUser,
|
|
||||||
new ArrayList<>() /* componentInfo */,
|
|
||||||
sensorType,
|
|
||||||
true /* resetLockoutRequiresHardwareAuthToken */));
|
|
||||||
when(mockedFingerprintManager.getSensorPropertiesInternal()).thenReturn(props);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setupFingerprintEnrolledFingerprints(
|
|
||||||
@NonNull FingerprintManager mockedFingerprintManager,
|
|
||||||
int userId,
|
|
||||||
int enrolledFingerprints) {
|
|
||||||
final ArrayList<Fingerprint> ret = new ArrayList<>();
|
|
||||||
for (int i = 0; i < enrolledFingerprints; ++i) {
|
|
||||||
ret.add(new Fingerprint("name", 0, 0, 0L));
|
|
||||||
}
|
|
||||||
when(mockedFingerprintManager.getEnrolledFingerprints(userId)).thenReturn(ret);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -20,20 +20,20 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_REAR
|
|||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC;
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC;
|
||||||
|
|
||||||
import static com.android.settings.biometrics2.data.repository.FingerprintRepositoryTest.setupFingerprintEnrolledFingerprints;
|
|
||||||
import static com.android.settings.biometrics2.data.repository.FingerprintRepositoryTest.setupFingerprintFirstSensor;
|
|
||||||
import static com.android.settings.biometrics2.data.repository.FingerprintRepositoryTest.setupSuwMaxFingerprintsEnrollable;
|
|
||||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX;
|
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX;
|
||||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_OK;
|
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_OK;
|
||||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_UNKNOWN;
|
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_UNKNOWN;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_CONTINUE_ENROLL;
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_CONTINUE_ENROLL;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_DONE_AND_FINISH;
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_DONE_AND_FINISH;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL;
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newAllFalseRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newAllFalseRequest;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newIsSuwDeferredRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newIsSuwDeferredRequest;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newIsSuwPortalRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newIsSuwPortalRequest;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newIsSuwRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newIsSuwRequest;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newIsSuwSuggestedActionFlowRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newIsSuwSuggestedActionFlowRequest;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.newFingerprintRepository;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.setupFingerprintEnrolledFingerprints;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.setupSuwMaxFingerprintsEnrollable;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -74,62 +74,83 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Mock private FingerprintManager mFingerprintManager;
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
private Application mApplication;
|
private Application mApplication;
|
||||||
private FingerprintRepository mFingerprintRepository;
|
|
||||||
private FingerprintEnrollIntroViewModel mViewModel;
|
private FingerprintEnrollIntroViewModel newFingerprintEnrollIntroViewModel(
|
||||||
|
@NonNull FingerprintRepository fingerprintRepository) {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel =
|
||||||
|
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||||
|
// MediatorLiveData won't update itself unless observed
|
||||||
|
viewModel.getPageStatusLiveData().observeForever(event -> {});
|
||||||
|
return viewModel;
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mApplication = ApplicationProvider.getApplicationContext();
|
mApplication = ApplicationProvider.getApplicationContext();
|
||||||
mFingerprintRepository = new FingerprintRepository(mFingerprintManager);
|
|
||||||
mViewModel = new FingerprintEnrollIntroViewModel(mApplication, mFingerprintRepository);
|
|
||||||
// MediatorLiveData won't update itself unless observed
|
|
||||||
mViewModel.getPageStatusLiveData().observeForever(event -> {});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPageStatusLiveDataDefaultValue() {
|
public void testPageStatusLiveDataDefaultValue() {
|
||||||
final FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.hasScrollToBottom()).isFalse();
|
assertThat(status.hasScrollToBottom()).isFalse();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_UNKNOWN);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testClearActionLiveData() {
|
public void testClearActionLiveData() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
|
||||||
final MutableLiveData<Integer> actionLiveData =
|
final MutableLiveData<Integer> actionLiveData =
|
||||||
(MutableLiveData<Integer>) mViewModel.getActionLiveData();
|
(MutableLiveData<Integer>) viewModel.getActionLiveData();
|
||||||
actionLiveData.postValue(1);
|
actionLiveData.postValue(1);
|
||||||
assertThat(actionLiveData.getValue()).isEqualTo(1);
|
assertThat(actionLiveData.getValue()).isEqualTo(1);
|
||||||
|
|
||||||
mViewModel.clearActionLiveData();
|
viewModel.clearActionLiveData();
|
||||||
|
|
||||||
assertThat(actionLiveData.getValue()).isNull();
|
assertThat(actionLiveData.getValue()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetEnrollmentRequest() {
|
public void testGetEnrollmentRequest() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
||||||
|
|
||||||
mViewModel.setEnrollmentRequest(request);
|
viewModel.setEnrollmentRequest(request);
|
||||||
|
|
||||||
assertThat(mViewModel.getEnrollmentRequest()).isEqualTo(request);
|
assertThat(viewModel.getEnrollmentRequest()).isEqualTo(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnStartToUpdateEnrollableStatus_isSuw() {
|
public void testOnStartToUpdateEnrollableStatusOk_isSuw() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
final int userId = 44;
|
final int userId = 44;
|
||||||
mViewModel.setUserId(userId);
|
viewModel.setUserId(userId);
|
||||||
mViewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||||
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
|
||||||
|
|
||||||
|
viewModel.onStart(mLifecycleOwner);
|
||||||
|
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnStartToUpdateEnrollableStatusReachMax_isSuw() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
final int userId = 44;
|
||||||
|
viewModel.setUserId(userId);
|
||||||
|
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
|
||||||
status = mViewModel.getPageStatusLiveData().getValue();
|
viewModel.onStart(mLifecycleOwner);
|
||||||
|
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,38 +197,44 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
|
|
||||||
private void testOnStartToUpdateEnrollableStatusOk(@NonNull EnrollmentRequest request) {
|
private void testOnStartToUpdateEnrollableStatusOk(@NonNull EnrollmentRequest request) {
|
||||||
final int userId = 45;
|
final int userId = 45;
|
||||||
mViewModel.setUserId(userId);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
mViewModel.setEnrollmentRequest(request);
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
viewModel.setUserId(userId);
|
||||||
|
viewModel.setEnrollmentRequest(request);
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5);
|
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
viewModel.onStart(mLifecycleOwner);
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testOnStartToUpdateEnrollableStatusReachMax(@NonNull EnrollmentRequest request) {
|
private void testOnStartToUpdateEnrollableStatusReachMax(@NonNull EnrollmentRequest request) {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
final int userId = 45;
|
final int userId = 45;
|
||||||
mViewModel.setUserId(userId);
|
viewModel.setUserId(userId);
|
||||||
mViewModel.setEnrollmentRequest(request);
|
viewModel.setEnrollmentRequest(request);
|
||||||
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 5);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 5);
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5);
|
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
viewModel.onStart(mLifecycleOwner);
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void textCanAssumeUdfps_forUdfpsUltrasonicSensor() {
|
public void textCanAssumeUdfps_forUdfpsUltrasonicSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 1);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
assertThat(mViewModel.canAssumeUdfps()).isEqualTo(true);
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 5));
|
||||||
|
|
||||||
|
assertThat(viewModel.canAssumeUdfps()).isEqualTo(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void textCanAssumeUdfps_forRearSensor() {
|
public void textCanAssumeUdfps_forRearSensor() {
|
||||||
setupFingerprintFirstSensor(mFingerprintManager, TYPE_REAR, 1);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
assertThat(mViewModel.canAssumeUdfps()).isEqualTo(false);
|
newFingerprintRepository(mFingerprintManager, TYPE_REAR, 5));
|
||||||
|
|
||||||
|
assertThat(viewModel.canAssumeUdfps()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -216,13 +243,14 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
// FingerprintRepository.isParentalConsentRequired() calls static method inside, we can't
|
// FingerprintRepository.isParentalConsentRequired() calls static method inside, we can't
|
||||||
// mock static method
|
// mock static method
|
||||||
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
||||||
mViewModel = new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
final FingerprintEnrollIntroViewModel viewModel =
|
||||||
|
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||||
|
|
||||||
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(true);
|
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(true);
|
||||||
assertThat(mViewModel.isParentalConsentRequired()).isEqualTo(true);
|
assertThat(viewModel.isParentalConsentRequired()).isEqualTo(true);
|
||||||
|
|
||||||
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(false);
|
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(false);
|
||||||
assertThat(mViewModel.isParentalConsentRequired()).isEqualTo(false);
|
assertThat(viewModel.isParentalConsentRequired()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -231,74 +259,87 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
// FingerprintRepository.isDisabledByAdmin() calls static method inside, we can't mock
|
// FingerprintRepository.isDisabledByAdmin() calls static method inside, we can't mock
|
||||||
// static method
|
// static method
|
||||||
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
||||||
mViewModel = new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
final FingerprintEnrollIntroViewModel viewModel =
|
||||||
|
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||||
|
|
||||||
final int userId = 33;
|
final int userId = 33;
|
||||||
mViewModel.setUserId(userId);
|
viewModel.setUserId(userId);
|
||||||
|
|
||||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(true);
|
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(true);
|
||||||
assertThat(mViewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(true);
|
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(true);
|
||||||
|
|
||||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(false);
|
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(false);
|
||||||
assertThat(mViewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(false);
|
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetHasScrolledToBottom() {
|
public void testSetHasScrolledToBottom() {
|
||||||
mViewModel.setHasScrolledToBottom(true);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
|
||||||
|
viewModel.setHasScrolledToBottom(true);
|
||||||
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.hasScrollToBottom()).isEqualTo(true);
|
assertThat(status.hasScrollToBottom()).isEqualTo(true);
|
||||||
|
|
||||||
mViewModel.setHasScrolledToBottom(false);
|
viewModel.setHasScrolledToBottom(false);
|
||||||
status = mViewModel.getPageStatusLiveData().getValue();
|
status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.hasScrollToBottom()).isEqualTo(false);
|
assertThat(status.hasScrollToBottom()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnNextButtonClick_enrollNext() {
|
public void testOnNextButtonClick_enrollNext() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
final int userId = 46;
|
final int userId = 46;
|
||||||
mViewModel.setUserId(userId);
|
viewModel.setUserId(userId);
|
||||||
mViewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||||
|
|
||||||
// Set latest status to FINGERPRINT_ENROLLABLE_OK
|
// Set latest status to FINGERPRINT_ENROLLABLE_OK
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
viewModel.onStart(mLifecycleOwner);
|
||||||
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||||
|
|
||||||
// Perform click on `next`
|
// Perform click on `next`
|
||||||
mViewModel.onNextButtonClick();
|
viewModel.onNextButtonClick();
|
||||||
|
|
||||||
assertThat(mViewModel.getActionLiveData().getValue())
|
assertThat(viewModel.getActionLiveData().getValue())
|
||||||
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_CONTINUE_ENROLL);
|
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_CONTINUE_ENROLL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnNextButtonClick_doneAndFinish() {
|
public void testOnNextButtonClick_doneAndFinish() {
|
||||||
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
final int userId = 46;
|
final int userId = 46;
|
||||||
mViewModel.setUserId(userId);
|
viewModel.setUserId(userId);
|
||||||
mViewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||||
|
|
||||||
// Set latest status to FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX
|
// Set latest status to FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
mViewModel.onStart(mLifecycleOwner);
|
|
||||||
FingerprintEnrollIntroStatus status = mViewModel.getPageStatusLiveData().getValue();
|
viewModel.onStart(mLifecycleOwner);
|
||||||
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||||
|
|
||||||
// Perform click on `next`
|
// Perform click on `next`
|
||||||
mViewModel.onNextButtonClick();
|
viewModel.onNextButtonClick();
|
||||||
|
|
||||||
assertThat(mViewModel.getActionLiveData().getValue())
|
assertThat(viewModel.getActionLiveData().getValue())
|
||||||
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_DONE_AND_FINISH);
|
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_DONE_AND_FINISH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnSkipOrCancelButtonClick() {
|
public void testOnSkipOrCancelButtonClick() {
|
||||||
mViewModel.onSkipOrCancelButtonClick();
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||||
|
|
||||||
assertThat(mViewModel.getActionLiveData().getValue())
|
viewModel.onSkipOrCancelButtonClick();
|
||||||
|
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue())
|
||||||
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL);
|
.isEqualTo(FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,10 +20,10 @@ import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHE
|
|||||||
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_SKIP;
|
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_SKIP;
|
||||||
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
|
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
|
||||||
import static com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction.EXTRA_FINGERPRINT_ENROLLED_COUNT;
|
import static com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction.EXTRA_FINGERPRINT_ENROLLED_COUNT;
|
||||||
import static com.android.settings.biometrics2.data.repository.FingerprintRepositoryTest.setupFingerprintEnrolledFingerprints;
|
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollmentViewModel.SAVED_STATE_IS_WAITING_ACTIVITY_RESULT;
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollmentViewModel.SAVED_STATE_IS_WAITING_ACTIVITY_RESULT;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newAllFalseRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newAllFalseRequest;
|
||||||
import static com.android.settings.biometrics2.util.EnrollmentRequestUtil.newIsSuwRequest;
|
import static com.android.settings.biometrics2.utils.EnrollmentRequestUtils.newIsSuwRequest;
|
||||||
|
import static com.android.settings.biometrics2.utils.FingerprintRepositoryUtils.setupFingerprintEnrolledFingerprints;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.settings.biometrics2.util;
|
package com.android.settings.biometrics2.utils;
|
||||||
|
|
||||||
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
|
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||||
|
|
||||||
public class EnrollmentRequestUtil {
|
public class EnrollmentRequestUtils {
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static EnrollmentRequest newAllFalseRequest(@NonNull Context context) {
|
public static EnrollmentRequest newAllFalseRequest(@NonNull Context context) {
|
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.biometrics2.utils;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.doAnswer;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
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;
|
||||||
|
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||||
|
import com.android.settings.testutils.ResourcesUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class FingerprintRepositoryUtils {
|
||||||
|
|
||||||
|
public static void setupSuwMaxFingerprintsEnrollable(
|
||||||
|
@NonNull Context context,
|
||||||
|
@NonNull Resources mockedResources,
|
||||||
|
int numOfFp) {
|
||||||
|
final int resId = ResourcesUtils.getResourcesId(context, "integer",
|
||||||
|
"suw_max_fingerprints_enrollable");
|
||||||
|
when(mockedResources.getInteger(resId)).thenReturn(numOfFp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FingerprintRepository newFingerprintRepository(
|
||||||
|
@NonNull FingerprintManager mockedFingerprintManager,
|
||||||
|
@FingerprintSensorProperties.SensorType int sensorType,
|
||||||
|
int maxEnrollmentsPerUser) {
|
||||||
|
|
||||||
|
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
||||||
|
props.add(new FingerprintSensorPropertiesInternal(
|
||||||
|
0 /* sensorId */,
|
||||||
|
SensorProperties.STRENGTH_STRONG,
|
||||||
|
maxEnrollmentsPerUser,
|
||||||
|
new ArrayList<>() /* componentInfo */,
|
||||||
|
sensorType,
|
||||||
|
true /* resetLockoutRequiresHardwareAuthToken */));
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
final IFingerprintAuthenticatorsRegisteredCallback callback =
|
||||||
|
invocation.getArgument(0);
|
||||||
|
callback.onAllAuthenticatorsRegistered(props);
|
||||||
|
return null;
|
||||||
|
}).when(mockedFingerprintManager).addAuthenticatorsRegisteredCallback(any());
|
||||||
|
return new FingerprintRepository(mockedFingerprintManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setupFingerprintEnrolledFingerprints(
|
||||||
|
@NonNull FingerprintManager mockedFingerprintManager,
|
||||||
|
int userId,
|
||||||
|
int enrolledFingerprints) {
|
||||||
|
final ArrayList<Fingerprint> ret = new ArrayList<>();
|
||||||
|
for (int i = 0; i < enrolledFingerprints; ++i) {
|
||||||
|
ret.add(new Fingerprint("name", 0, 0, 0L));
|
||||||
|
}
|
||||||
|
when(mockedFingerprintManager.getEnrolledFingerprints(userId)).thenReturn(ret);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user