Merge "Refine FingerprintEnrollmentActivity"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b39a71e434
@@ -29,6 +29,7 @@ import androidx.lifecycle.viewmodel.CreationExtras;
|
|||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintUpdater;
|
import com.android.settings.biometrics.fingerprint.FingerprintUpdater;
|
||||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||||
|
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.ChallengeGenerator;
|
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.ChallengeGenerator;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.DeviceFoldedViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.DeviceFoldedViewModel;
|
||||||
@@ -47,8 +48,11 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
|||||||
|
|
||||||
private static final String TAG = "BiometricsViewModelFact";
|
private static final String TAG = "BiometricsViewModelFact";
|
||||||
|
|
||||||
public static final CreationExtras.Key<ChallengeGenerator> CHALLENGE_GENERATOR =
|
public static final CreationExtras.Key<ChallengeGenerator> CHALLENGE_GENERATOR_KEY =
|
||||||
new CreationExtras.Key<ChallengeGenerator>() {};
|
new CreationExtras.Key<>() {};
|
||||||
|
public static final CreationExtras.Key<EnrollmentRequest> ENROLLMENT_REQUEST_KEY =
|
||||||
|
new CreationExtras.Key<>() {};
|
||||||
|
public static final CreationExtras.Key<Integer> USER_ID_KEY = new CreationExtras.Key<>() {};
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
@@ -68,7 +72,7 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
|||||||
if (modelClass.isAssignableFrom(AutoCredentialViewModel.class)) {
|
if (modelClass.isAssignableFrom(AutoCredentialViewModel.class)) {
|
||||||
final LockPatternUtils lockPatternUtils =
|
final LockPatternUtils lockPatternUtils =
|
||||||
featureFactory.getSecurityFeatureProvider().getLockPatternUtils(application);
|
featureFactory.getSecurityFeatureProvider().getLockPatternUtils(application);
|
||||||
final ChallengeGenerator challengeGenerator = extras.get(CHALLENGE_GENERATOR);
|
final ChallengeGenerator challengeGenerator = extras.get(CHALLENGE_GENERATOR_KEY);
|
||||||
if (challengeGenerator != null) {
|
if (challengeGenerator != null) {
|
||||||
return (T) new AutoCredentialViewModel(application, lockPatternUtils,
|
return (T) new AutoCredentialViewModel(application, lockPatternUtils,
|
||||||
challengeGenerator);
|
challengeGenerator);
|
||||||
@@ -79,21 +83,31 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
|||||||
} else if (modelClass.isAssignableFrom(DeviceRotationViewModel.class)) {
|
} else if (modelClass.isAssignableFrom(DeviceRotationViewModel.class)) {
|
||||||
return (T) new DeviceRotationViewModel(application);
|
return (T) new DeviceRotationViewModel(application);
|
||||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollFindSensorViewModel.class)) {
|
} else if (modelClass.isAssignableFrom(FingerprintEnrollFindSensorViewModel.class)) {
|
||||||
return (T) new FingerprintEnrollFindSensorViewModel(application);
|
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||||
|
if (request != null) {
|
||||||
|
return (T) new FingerprintEnrollFindSensorViewModel(application, request.isSuw());
|
||||||
|
}
|
||||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollIntroViewModel.class)) {
|
} else if (modelClass.isAssignableFrom(FingerprintEnrollIntroViewModel.class)) {
|
||||||
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
||||||
if (repository != null) {
|
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||||
return (T) new FingerprintEnrollIntroViewModel(application, repository);
|
final Integer userId = extras.get(USER_ID_KEY);
|
||||||
|
if (repository != null && request != null && userId != null) {
|
||||||
|
return (T) new FingerprintEnrollIntroViewModel(application, repository, request,
|
||||||
|
userId);
|
||||||
}
|
}
|
||||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollmentViewModel.class)) {
|
} else if (modelClass.isAssignableFrom(FingerprintEnrollmentViewModel.class)) {
|
||||||
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
||||||
if (repository != null) {
|
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||||
|
if (repository != null && request != null) {
|
||||||
return (T) new FingerprintEnrollmentViewModel(application, repository,
|
return (T) new FingerprintEnrollmentViewModel(application, repository,
|
||||||
application.getSystemService(KeyguardManager.class));
|
application.getSystemService(KeyguardManager.class), request);
|
||||||
}
|
}
|
||||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollProgressViewModel.class)) {
|
} else if (modelClass.isAssignableFrom(FingerprintEnrollProgressViewModel.class)) {
|
||||||
return (T) new FingerprintEnrollProgressViewModel(application,
|
final Integer userId = extras.get(USER_ID_KEY);
|
||||||
new FingerprintUpdater(application));
|
if (userId != null) {
|
||||||
|
return (T) new FingerprintEnrollProgressViewModel(application,
|
||||||
|
new FingerprintUpdater(application), userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return create(modelClass);
|
return create(modelClass);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,10 @@ public final class CredentialModel {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private Long mClearGkPwHandleMillis = null;
|
private Long mClearGkPwHandleMillis = null;
|
||||||
|
|
||||||
public CredentialModel(@NonNull Bundle bundle, @NonNull Clock clock) {
|
public CredentialModel(@Nullable Bundle bundle, @NonNull Clock clock) {
|
||||||
|
if (bundle == null) {
|
||||||
|
bundle = new Bundle();
|
||||||
|
}
|
||||||
mUserId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
|
mUserId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
|
||||||
mSensorId = bundle.getInt(EXTRA_KEY_SENSOR_ID, INVALID_SENSOR_ID);
|
mSensorId = bundle.getInt(EXTRA_KEY_SENSOR_ID, INVALID_SENSOR_ID);
|
||||||
mChallenge = bundle.getLong(EXTRA_KEY_CHALLENGE, INVALID_CHALLENGE);
|
mChallenge = bundle.getLong(EXTRA_KEY_CHALLENGE, INVALID_CHALLENGE);
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ public class FingerprintEnrollIntroFragment extends Fragment {
|
|||||||
mIconShield.setVisibility(View.GONE);
|
mIconShield.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
mSecondaryFooterButton.setText(context,
|
mSecondaryFooterButton.setText(context,
|
||||||
mViewModel.getEnrollmentRequest().isAfterSuwOrSuwSuggestedAction()
|
mViewModel.getRequest().isAfterSuwOrSuwSuggestedAction()
|
||||||
? R.string.security_settings_fingerprint_enroll_introduction_cancel
|
? R.string.security_settings_fingerprint_enroll_introduction_cancel
|
||||||
: R.string.security_settings_fingerprint_enroll_introduction_no_thanks);
|
: R.string.security_settings_fingerprint_enroll_introduction_no_thanks);
|
||||||
|
|
||||||
@@ -209,16 +209,9 @@ public class FingerprintEnrollIntroFragment extends Fragment {
|
|||||||
public void onAttach(@NonNull Context context) {
|
public void onAttach(@NonNull Context context) {
|
||||||
mViewModel = new ViewModelProvider(getActivity())
|
mViewModel = new ViewModelProvider(getActivity())
|
||||||
.get(FingerprintEnrollIntroViewModel.class);
|
.get(FingerprintEnrollIntroViewModel.class);
|
||||||
getLifecycle().addObserver(mViewModel);
|
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDetach() {
|
|
||||||
getLifecycle().removeObserver(mViewModel);
|
|
||||||
super.onDetach();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private PorterDuffColorFilter getIconColorFilter(@NonNull Context context) {
|
private PorterDuffColorFilter getIconColorFilter(@NonNull Context context) {
|
||||||
if (mIconColorFilter == null) {
|
if (mIconColorFilter == null) {
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ package com.android.settings.biometrics2.ui.view;
|
|||||||
import static androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
import static androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
||||||
import static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY;
|
import static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY;
|
||||||
|
|
||||||
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.CHALLENGE_GENERATOR;
|
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.CHALLENGE_GENERATOR_KEY;
|
||||||
|
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.ENROLLMENT_REQUEST_KEY;
|
||||||
|
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.USER_ID_KEY;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CHOOSE_LOCK;
|
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CHOOSE_LOCK;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CONFIRM_LOCK;
|
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CONFIRM_LOCK;
|
||||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_IS_GENERATING_CHALLENGE;
|
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_IS_GENERATING_CHALLENGE;
|
||||||
@@ -37,9 +39,11 @@ import android.annotation.StyleRes;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.SystemClock;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.activity.result.ActivityResult;
|
import androidx.activity.result.ActivityResult;
|
||||||
@@ -63,9 +67,11 @@ import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
|||||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollEnrolling;
|
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollEnrolling;
|
||||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||||
import com.android.settings.biometrics2.factory.BiometricsViewModelFactory;
|
import com.android.settings.biometrics2.factory.BiometricsViewModelFactory;
|
||||||
|
import com.android.settings.biometrics2.ui.model.CredentialModel;
|
||||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.FingerprintChallengeGenerator;
|
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.FingerprintChallengeGenerator;
|
||||||
|
import com.android.settings.biometrics2.ui.viewmodel.DeviceFoldedViewModel;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel;
|
||||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollProgressViewModel;
|
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollProgressViewModel;
|
||||||
@@ -126,7 +132,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
mViewModelProvider = new ViewModelProvider(this);
|
mViewModelProvider = new ViewModelProvider(this);
|
||||||
|
|
||||||
mViewModel = mViewModelProvider.get(FingerprintEnrollmentViewModel.class);
|
mViewModel = mViewModelProvider.get(FingerprintEnrollmentViewModel.class);
|
||||||
mViewModel.setRequest(new EnrollmentRequest(getIntent(), getApplicationContext()));
|
|
||||||
mViewModel.setSavedInstanceState(savedInstanceState);
|
mViewModel.setSavedInstanceState(savedInstanceState);
|
||||||
|
|
||||||
mAutoCredentialViewModel = mViewModelProvider.get(AutoCredentialViewModel.class);
|
mAutoCredentialViewModel = mViewModelProvider.get(AutoCredentialViewModel.class);
|
||||||
@@ -173,7 +178,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// observe LiveData
|
// observe LiveData
|
||||||
getLifecycle().addObserver(mViewModel);
|
|
||||||
mViewModel.getSetResultLiveData().observe(this, this::onSetActivityResult);
|
mViewModel.getSetResultLiveData().observe(this, this::onSetActivityResult);
|
||||||
|
|
||||||
mAutoCredentialViewModel.getGenerateChallengeFailedLiveData().observe(this,
|
mAutoCredentialViewModel.getGenerateChallengeFailedLiveData().observe(this,
|
||||||
@@ -193,9 +197,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
final FingerprintEnrollIntroViewModel introViewModel =
|
final FingerprintEnrollIntroViewModel introViewModel =
|
||||||
mViewModelProvider.get(FingerprintEnrollIntroViewModel.class);
|
mViewModelProvider.get(FingerprintEnrollIntroViewModel.class);
|
||||||
|
|
||||||
introViewModel.setEnrollmentRequest(mViewModel.getRequest());
|
|
||||||
introViewModel.setUserId(mAutoCredentialViewModel.getUserId());
|
|
||||||
|
|
||||||
// Clear ActionLiveData in FragmentViewModel to prevent getting previous action during
|
// Clear ActionLiveData in FragmentViewModel to prevent getting previous action during
|
||||||
// recreate, like press 'Agree' then press 'back' in FingerprintEnrollFindSensor activity.
|
// recreate, like press 'Agree' then press 'back' in FingerprintEnrollFindSensor activity.
|
||||||
introViewModel.clearActionLiveData();
|
introViewModel.clearActionLiveData();
|
||||||
@@ -224,12 +225,10 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
if (initProgressViewModel) {
|
if (initProgressViewModel) {
|
||||||
final FingerprintEnrollProgressViewModel progressViewModel =
|
final FingerprintEnrollProgressViewModel progressViewModel =
|
||||||
mViewModelProvider.get(FingerprintEnrollProgressViewModel.class);
|
mViewModelProvider.get(FingerprintEnrollProgressViewModel.class);
|
||||||
progressViewModel.setUserId(mAutoCredentialViewModel.getUserId());
|
|
||||||
progressViewModel.setToken(mAutoCredentialViewModel.getToken());
|
progressViewModel.setToken(mAutoCredentialViewModel.getToken());
|
||||||
}
|
}
|
||||||
final FingerprintEnrollFindSensorViewModel findSensorViewModel =
|
final FingerprintEnrollFindSensorViewModel findSensorViewModel =
|
||||||
mViewModelProvider.get(FingerprintEnrollFindSensorViewModel.class);
|
mViewModelProvider.get(FingerprintEnrollFindSensorViewModel.class);
|
||||||
findSensorViewModel.setIsSuw(mViewModel.getRequest().isSuw());
|
|
||||||
getSupportFragmentManager().beginTransaction()
|
getSupportFragmentManager().beginTransaction()
|
||||||
.setReorderingAllowed(true)
|
.setReorderingAllowed(true)
|
||||||
.setCustomAnimations(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out,
|
.setCustomAnimations(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out,
|
||||||
@@ -408,9 +407,19 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
super.getDefaultViewModelCreationExtras().get(APPLICATION_KEY);
|
super.getDefaultViewModelCreationExtras().get(APPLICATION_KEY);
|
||||||
final MutableCreationExtras ret = new MutableCreationExtras();
|
final MutableCreationExtras ret = new MutableCreationExtras();
|
||||||
ret.set(APPLICATION_KEY, application);
|
ret.set(APPLICATION_KEY, application);
|
||||||
|
|
||||||
final FingerprintRepository repository = FeatureFactory.getFactory(application)
|
final FingerprintRepository repository = FeatureFactory.getFactory(application)
|
||||||
.getBiometricsRepositoryProvider().getFingerprintRepository(application);
|
.getBiometricsRepositoryProvider().getFingerprintRepository(application);
|
||||||
ret.set(CHALLENGE_GENERATOR, new FingerprintChallengeGenerator(repository));
|
ret.set(CHALLENGE_GENERATOR_KEY, new FingerprintChallengeGenerator(repository));
|
||||||
|
|
||||||
|
ret.set(ENROLLMENT_REQUEST_KEY, new EnrollmentRequest(getIntent(),
|
||||||
|
getApplicationContext()));
|
||||||
|
|
||||||
|
Bundle extras = getIntent().getExtras();
|
||||||
|
final CredentialModel credentialModel = new CredentialModel(extras,
|
||||||
|
SystemClock.elapsedRealtimeClock());
|
||||||
|
ret.set(USER_ID_KEY, credentialModel.getUserId());
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -433,9 +442,9 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||||
getLifecycle().removeObserver(mViewModel);
|
mViewModelProvider.get(DeviceFoldedViewModel.class).onConfigurationChanged(newConfig);
|
||||||
super.onDestroy();
|
super.onConfigurationChanged(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -201,8 +201,7 @@ public class AutoCredentialViewModel extends AndroidViewModel {
|
|||||||
} else {
|
} else {
|
||||||
bundle = intent.getExtras();
|
bundle = intent.getExtras();
|
||||||
}
|
}
|
||||||
mCredentialModel = new CredentialModel(bundle != null ? bundle : new Bundle(),
|
mCredentialModel = new CredentialModel(bundle, SystemClock.elapsedRealtimeClock());
|
||||||
SystemClock.elapsedRealtimeClock());
|
|
||||||
|
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "setCredentialModel " + mCredentialModel + ", savedInstanceState exist:"
|
Log.d(TAG, "setCredentialModel " + mCredentialModel + ", savedInstanceState exist:"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.biometrics2.ui.viewmodel;
|
package com.android.settings.biometrics2.ui.viewmodel;
|
||||||
|
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -51,6 +52,13 @@ public class DeviceFoldedViewModel extends ViewModel {
|
|||||||
mScreenSizeFoldProvider.registerCallback(mIsFoldedCallback, executor);
|
mScreenSizeFoldProvider.registerCallback(mIsFoldedCallback, executor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls this method when activity gets configuration change
|
||||||
|
*/
|
||||||
|
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||||
|
mScreenSizeFoldProvider.onConfigurationChange(newConfig);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns FoldedLiveData
|
* Returns FoldedLiveData
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,17 +29,25 @@ import androidx.lifecycle.AndroidViewModel;
|
|||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ViewModel explaining the fingerprint sensor location for fingerprint enrollment.
|
* ViewModel explaining the fingerprint sensor location for fingerprint enrollment.
|
||||||
*/
|
*/
|
||||||
public class DeviceRotationViewModel extends AndroidViewModel {
|
public class DeviceRotationViewModel extends AndroidViewModel {
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
private static final String TAG = "RotationViewModel";
|
private static final String TAG = "DeviceRotationViewModel";
|
||||||
|
|
||||||
private final DisplayManager mDisplayManager;
|
private final DisplayManager mDisplayManager;
|
||||||
|
private final boolean mIsReverseDefaultRotation;
|
||||||
@NonNull private final DisplayInfo mDisplayInfo = new DisplayInfo();
|
@NonNull private final DisplayInfo mDisplayInfo = new DisplayInfo();
|
||||||
private final DisplayListener mDisplayListener = new DisplayListener() {
|
|
||||||
|
/** {@link android.hardware.display.DisplayManager} is a final class, set this member visibility
|
||||||
|
* to 'protected' for testing
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
protected final DisplayListener mDisplayListener = new DisplayListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onDisplayAdded(int displayId) {
|
public void onDisplayAdded(int displayId) {
|
||||||
}
|
}
|
||||||
@@ -58,29 +66,43 @@ public class DeviceRotationViewModel extends AndroidViewModel {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@NonNull private final MutableLiveData<Integer> mLiveData =
|
@NonNull private final MutableLiveData<Integer> mLiveData = new MutableLiveData<>();
|
||||||
new MutableLiveData<>(getRotation());
|
|
||||||
|
|
||||||
public DeviceRotationViewModel(@NonNull Application application) {
|
public DeviceRotationViewModel(@NonNull Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
mDisplayManager = application.getSystemService(DisplayManager.class);
|
mDisplayManager = application.getSystemService(DisplayManager.class);
|
||||||
mDisplayManager.registerDisplayListener(mDisplayListener,
|
mDisplayManager.registerDisplayListener(mDisplayListener,
|
||||||
application.getMainThreadHandler());
|
application.getMainThreadHandler());
|
||||||
|
mIsReverseDefaultRotation = application.getResources().getBoolean(
|
||||||
|
com.android.internal.R.bool.config_reverseDefaultRotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns current rotation
|
* Returns current rotation.
|
||||||
|
*
|
||||||
|
* {@link android.view.Display} is a final class, set this method visibility to "protected" for
|
||||||
|
* inheriting it in test
|
||||||
*/
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
@Surface.Rotation
|
@Surface.Rotation
|
||||||
private int getRotation() {
|
protected int getRotation() {
|
||||||
getApplication().getDisplay().getDisplayInfo(mDisplayInfo);
|
getApplication().getDisplay().getDisplayInfo(mDisplayInfo);
|
||||||
return mDisplayInfo.rotation;
|
if (mIsReverseDefaultRotation) {
|
||||||
|
return (mDisplayInfo.rotation + 1) % 4;
|
||||||
|
} else {
|
||||||
|
return mDisplayInfo.rotation;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns RotationLiveData
|
* Returns RotationLiveData
|
||||||
*/
|
*/
|
||||||
public LiveData<Integer> getLiveData() {
|
public LiveData<Integer> getLiveData() {
|
||||||
|
if (mLiveData.getValue() == null) {
|
||||||
|
// Init data here because if we set it through getDisplay().getRotation() or through
|
||||||
|
// getDisplay().getDisplayInfo() in constructor(), we always get incorrect value.
|
||||||
|
mLiveData.setValue(getRotation());
|
||||||
|
}
|
||||||
return mLiveData;
|
return mLiveData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,18 +62,12 @@ public class FingerprintEnrollFindSensorViewModel extends AndroidViewModel {
|
|||||||
|
|
||||||
private final AccessibilityManager mAccessibilityManager;
|
private final AccessibilityManager mAccessibilityManager;
|
||||||
|
|
||||||
private boolean mIsSuw = false;
|
private final boolean mIsSuw;
|
||||||
@NonNull private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
@NonNull private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
||||||
|
|
||||||
public FingerprintEnrollFindSensorViewModel(@NonNull Application application) {
|
public FingerprintEnrollFindSensorViewModel(@NonNull Application application, boolean isSuw) {
|
||||||
super(application);
|
super(application);
|
||||||
mAccessibilityManager = application.getSystemService(AccessibilityManager.class);
|
mAccessibilityManager = application.getSystemService(AccessibilityManager.class);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets isSetupWizard or not
|
|
||||||
*/
|
|
||||||
public void setIsSuw(boolean isSuw) {
|
|
||||||
mIsSuw = isSuw;
|
mIsSuw = isSuw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,10 @@ import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroSt
|
|||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.AndroidViewModel;
|
import androidx.lifecycle.AndroidViewModel;
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MediatorLiveData;
|
import androidx.lifecycle.MediatorLiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
@@ -43,8 +40,7 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
/**
|
/**
|
||||||
* Fingerprint intro onboarding page view model implementation
|
* Fingerprint intro onboarding page view model implementation
|
||||||
*/
|
*/
|
||||||
public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
public class FingerprintEnrollIntroViewModel extends AndroidViewModel {
|
||||||
implements DefaultLifecycleObserver {
|
|
||||||
|
|
||||||
private static final String TAG = "FingerprintEnrollIntroViewModel";
|
private static final String TAG = "FingerprintEnrollIntroViewModel";
|
||||||
private static final boolean HAS_SCROLLED_TO_BOTTOM_DEFAULT = false;
|
private static final boolean HAS_SCROLLED_TO_BOTTOM_DEFAULT = false;
|
||||||
@@ -82,13 +78,16 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
|||||||
private final MediatorLiveData<FingerprintEnrollIntroStatus> mPageStatusLiveData =
|
private final MediatorLiveData<FingerprintEnrollIntroStatus> mPageStatusLiveData =
|
||||||
new MediatorLiveData<>();
|
new MediatorLiveData<>();
|
||||||
private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
||||||
private int mUserId = UserHandle.myUserId();
|
private final int mUserId;
|
||||||
private EnrollmentRequest mEnrollmentRequest = null;
|
@NonNull private final EnrollmentRequest mRequest;
|
||||||
|
|
||||||
public FingerprintEnrollIntroViewModel(@NonNull Application application,
|
public FingerprintEnrollIntroViewModel(@NonNull Application application,
|
||||||
@NonNull FingerprintRepository fingerprintRepository) {
|
@NonNull FingerprintRepository fingerprintRepository,
|
||||||
|
@NonNull EnrollmentRequest request, int userId) {
|
||||||
super(application);
|
super(application);
|
||||||
mFingerprintRepository = fingerprintRepository;
|
mFingerprintRepository = fingerprintRepository;
|
||||||
|
mRequest = request;
|
||||||
|
mUserId = userId;
|
||||||
|
|
||||||
mPageStatusLiveData.addSource(
|
mPageStatusLiveData.addSource(
|
||||||
mEnrollableStatusLiveData,
|
mEnrollableStatusLiveData,
|
||||||
@@ -108,27 +107,21 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
|||||||
enrollableValue != null ? enrollableValue : ENROLLABLE_STATUS_DEFAULT);
|
enrollableValue != null ? enrollableValue : ENROLLABLE_STATUS_DEFAULT);
|
||||||
mPageStatusLiveData.setValue(status);
|
mPageStatusLiveData.setValue(status);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
public void setUserId(int userId) {
|
updateEnrollableStatus();
|
||||||
mUserId = userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnrollmentRequest(@NonNull EnrollmentRequest enrollmentRequest) {
|
|
||||||
mEnrollmentRequest = enrollmentRequest;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get enrollment request
|
* Get enrollment request
|
||||||
*/
|
*/
|
||||||
public EnrollmentRequest getEnrollmentRequest() {
|
public EnrollmentRequest getRequest() {
|
||||||
return mEnrollmentRequest;
|
return mRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateEnrollableStatus() {
|
private void updateEnrollableStatus() {
|
||||||
final int num = mFingerprintRepository.getNumOfEnrolledFingerprintsSize(mUserId);
|
final int num = mFingerprintRepository.getNumOfEnrolledFingerprintsSize(mUserId);
|
||||||
final int max =
|
final int max =
|
||||||
mEnrollmentRequest.isSuw() && !mEnrollmentRequest.isAfterSuwOrSuwSuggestedAction()
|
mRequest.isSuw() && !mRequest.isAfterSuwOrSuwSuggestedAction()
|
||||||
? mFingerprintRepository.getMaxFingerprintsInSuw(getApplication().getResources())
|
? mFingerprintRepository.getMaxFingerprintsInSuw(getApplication().getResources())
|
||||||
: mFingerprintRepository.getMaxFingerprints();
|
: mFingerprintRepository.getMaxFingerprints();
|
||||||
mEnrollableStatusLiveData.postValue(num >= max
|
mEnrollableStatusLiveData.postValue(num >= max
|
||||||
@@ -208,10 +201,4 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
|||||||
public void onSkipOrCancelButtonClick() {
|
public void onSkipOrCancelButtonClick() {
|
||||||
mActionLiveData.postValue(FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL);
|
mActionLiveData.postValue(FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(@NonNull LifecycleOwner owner) {
|
|
||||||
updateEnrollableStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import android.hardware.fingerprint.FingerprintManager.EnrollReason;
|
|||||||
import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
|
import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
|
||||||
import android.os.CancellationSignal;
|
import android.os.CancellationSignal;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -58,7 +57,7 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
|||||||
new MutableLiveData<>();
|
new MutableLiveData<>();
|
||||||
|
|
||||||
private byte[] mToken = null;
|
private byte[] mToken = null;
|
||||||
private int mUserId = UserHandle.myUserId();
|
private final int mUserId;
|
||||||
|
|
||||||
private final FingerprintUpdater mFingerprintUpdater;
|
private final FingerprintUpdater mFingerprintUpdater;
|
||||||
private final MessageDisplayController mMessageDisplayController;
|
private final MessageDisplayController mMessageDisplayController;
|
||||||
@@ -90,9 +89,11 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public FingerprintEnrollProgressViewModel(@NonNull Application application,
|
public FingerprintEnrollProgressViewModel(@NonNull Application application,
|
||||||
@NonNull FingerprintUpdater fingerprintUpdater) {
|
@NonNull FingerprintUpdater fingerprintUpdater, int userId) {
|
||||||
super(application);
|
super(application);
|
||||||
mFingerprintUpdater = fingerprintUpdater;
|
mFingerprintUpdater = fingerprintUpdater;
|
||||||
|
mUserId = userId;
|
||||||
|
|
||||||
final Resources res = application.getResources();
|
final Resources res = application.getResources();
|
||||||
mMessageDisplayController =
|
mMessageDisplayController =
|
||||||
res.getBoolean(R.bool.enrollment_message_display_controller_flag)
|
res.getBoolean(R.bool.enrollment_message_display_controller_flag)
|
||||||
@@ -112,10 +113,6 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
|||||||
mToken = token;
|
mToken = token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserId(int userId) {
|
|
||||||
mUserId = userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clear progress
|
* clear progress
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.lifecycle.AndroidViewModel;
|
import androidx.lifecycle.AndroidViewModel;
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
@@ -47,8 +46,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
/**
|
/**
|
||||||
* Fingerprint enrollment view model implementation
|
* Fingerprint enrollment view model implementation
|
||||||
*/
|
*/
|
||||||
public class FingerprintEnrollmentViewModel extends AndroidViewModel implements
|
public class FingerprintEnrollmentViewModel extends AndroidViewModel {
|
||||||
DefaultLifecycleObserver {
|
|
||||||
|
|
||||||
private static final String TAG = "FingerprintEnrollmentViewModel";
|
private static final String TAG = "FingerprintEnrollmentViewModel";
|
||||||
|
|
||||||
@@ -60,32 +58,23 @@ public class FingerprintEnrollmentViewModel extends AndroidViewModel implements
|
|||||||
|
|
||||||
private final AtomicBoolean mIsWaitingActivityResult = new AtomicBoolean(false);
|
private final AtomicBoolean mIsWaitingActivityResult = new AtomicBoolean(false);
|
||||||
private final MutableLiveData<ActivityResult> mSetResultLiveData = new MutableLiveData<>();
|
private final MutableLiveData<ActivityResult> mSetResultLiveData = new MutableLiveData<>();
|
||||||
|
@NonNull private final EnrollmentRequest mRequest;
|
||||||
/**
|
|
||||||
* Even this variable may be nullable, but activity will call setIntent() immediately during
|
|
||||||
* its onCreate(), we do not assign @Nullable for this variable here.
|
|
||||||
*/
|
|
||||||
private EnrollmentRequest mRequest = null;
|
|
||||||
|
|
||||||
public FingerprintEnrollmentViewModel(
|
public FingerprintEnrollmentViewModel(
|
||||||
@NonNull Application application,
|
@NonNull Application application,
|
||||||
@NonNull FingerprintRepository fingerprintRepository,
|
@NonNull FingerprintRepository fingerprintRepository,
|
||||||
@Nullable KeyguardManager keyguardManager) {
|
@Nullable KeyguardManager keyguardManager,
|
||||||
|
@NonNull EnrollmentRequest request) {
|
||||||
super(application);
|
super(application);
|
||||||
mFingerprintRepository = fingerprintRepository;
|
mFingerprintRepository = fingerprintRepository;
|
||||||
mKeyguardManager = keyguardManager;
|
mKeyguardManager = keyguardManager;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set EnrollmentRequest
|
|
||||||
*/
|
|
||||||
public void setRequest(@NonNull EnrollmentRequest request) {
|
|
||||||
mRequest = request;
|
mRequest = request;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get EnrollmentRequest
|
* Get EnrollmentRequest
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
public EnrollmentRequest getRequest() {
|
public EnrollmentRequest getRequest() {
|
||||||
return mRequest;
|
return mRequest;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import android.annotation.NonNull;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
@@ -145,7 +146,14 @@ public class CredentialModelTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sameValueFromBundle() {
|
public void testNullBundle() {
|
||||||
|
final CredentialModel credentialModel = new CredentialModel(null, mClock);
|
||||||
|
|
||||||
|
assertThat(credentialModel.getUserId()).isEqualTo(UserHandle.myUserId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSameValueFromBundle() {
|
||||||
final Bundle bundle = newCredentialModelIntentExtras(1234, 6677L, 1,
|
final Bundle bundle = newCredentialModelIntentExtras(1234, 6677L, 1,
|
||||||
new byte[] { 33, 44, 55 }, 987654321);
|
new byte[] { 33, 44, 55 }, 987654321);
|
||||||
|
|
||||||
@@ -156,7 +164,7 @@ public class CredentialModelTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sameValueFromBundle_nullToken() {
|
public void testSameValueFromBundle_nullToken() {
|
||||||
final Bundle bundle = newCredentialModelIntentExtras(22, 33L, 1, null, 21L);
|
final Bundle bundle = newCredentialModelIntentExtras(22, 33L, 1, null, 21L);
|
||||||
|
|
||||||
final CredentialModel model1 = new CredentialModel(bundle, mClock);
|
final CredentialModel model1 = new CredentialModel(bundle, mClock);
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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.ui.viewmodel;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||||
|
import com.android.systemui.unfold.compat.ScreenSizeFoldProvider;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class DeviceFoldedViewModelTest {
|
||||||
|
|
||||||
|
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||||
|
|
||||||
|
private DeviceFoldedViewModel mViewModel;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
final Application application = ApplicationProvider.getApplicationContext();
|
||||||
|
mViewModel = new DeviceFoldedViewModel(new ScreenSizeFoldProvider(application),
|
||||||
|
application.getMainExecutor());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLiveData() {
|
||||||
|
final Configuration config1 = new Configuration();
|
||||||
|
config1.smallestScreenWidthDp = 601;
|
||||||
|
mViewModel.onConfigurationChanged(config1);
|
||||||
|
assertThat(mViewModel.getLiveData().getValue()).isFalse();
|
||||||
|
|
||||||
|
final Configuration config2 = new Configuration();
|
||||||
|
config2.smallestScreenWidthDp = 599;
|
||||||
|
mViewModel.onConfigurationChanged(config2);
|
||||||
|
assertThat(mViewModel.getLiveData().getValue()).isTrue();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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.ui.viewmodel;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
import android.view.Surface;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.junit.MockitoJUnit;
|
||||||
|
import org.mockito.junit.MockitoRule;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class DeviceRotationViewModelTest {
|
||||||
|
|
||||||
|
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||||
|
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||||
|
|
||||||
|
private TestDeviceRotationViewModel mViewModel;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
TestDeviceRotationViewModel.sTestRotation = 3;
|
||||||
|
mViewModel = new TestDeviceRotationViewModel(ApplicationProvider.getApplicationContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDefaultLiveDataNotNull() {
|
||||||
|
assertThat(mViewModel.getLiveData().getValue()).isEqualTo(mViewModel.sTestRotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnDisplayChange() {
|
||||||
|
mViewModel.sTestRotation = 3;
|
||||||
|
mViewModel.triggerOnDisplayChanged();
|
||||||
|
assertThat(mViewModel.getLiveData().getValue()).isEqualTo(mViewModel.sTestRotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TestDeviceRotationViewModel extends DeviceRotationViewModel {
|
||||||
|
|
||||||
|
@Surface.Rotation static int sTestRotation = 0;
|
||||||
|
|
||||||
|
public TestDeviceRotationViewModel(@NonNull Application application) {
|
||||||
|
super(application);
|
||||||
|
}
|
||||||
|
|
||||||
|
void triggerOnDisplayChanged() {
|
||||||
|
mDisplayListener.onDisplayChanged(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRotation() {
|
||||||
|
return sTestRotation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* 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.ui.viewmodel;
|
||||||
|
|
||||||
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_DIALOG;
|
||||||
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP;
|
||||||
|
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_START;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class FingerprintEnrollFindSensorViewModelTest {
|
||||||
|
|
||||||
|
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||||
|
|
||||||
|
private Application mApplication;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
mApplication = ApplicationProvider.getApplicationContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClickStartButton() {
|
||||||
|
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||||
|
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||||
|
|
||||||
|
viewModel.onStartButtonClick();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||||
|
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_START);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClickSkipButton() {
|
||||||
|
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||||
|
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||||
|
|
||||||
|
viewModel.onSkipButtonClick();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||||
|
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClickSkipButtonInSuw() {
|
||||||
|
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||||
|
new FingerprintEnrollFindSensorViewModel(mApplication, true);
|
||||||
|
|
||||||
|
viewModel.onSkipButtonClick();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||||
|
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_DIALOG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClickSkipDialogButton() {
|
||||||
|
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||||
|
new FingerprintEnrollFindSensorViewModel(mApplication, true);
|
||||||
|
|
||||||
|
viewModel.onSkipDialogButtonClick();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||||
|
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClearActionLiveData() {
|
||||||
|
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||||
|
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||||
|
|
||||||
|
viewModel.onStartButtonClick();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isNotNull();
|
||||||
|
|
||||||
|
viewModel.clearActionLiveData();
|
||||||
|
assertThat(viewModel.getActionLiveData().getValue()).isNull();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,7 +22,6 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFP
|
|||||||
|
|
||||||
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.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;
|
||||||
@@ -45,7 +44,6 @@ import android.content.res.Resources;
|
|||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
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;
|
||||||
@@ -66,19 +64,22 @@ import org.mockito.junit.MockitoRule;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class FingerprintEnrollIntroViewModelTest {
|
public class FingerprintEnrollIntroViewModelTest {
|
||||||
|
|
||||||
|
private static final int TEST_USER_ID = 33;
|
||||||
|
|
||||||
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||||
|
|
||||||
@Mock private Resources mResources;
|
@Mock private Resources mResources;
|
||||||
@Mock private LifecycleOwner mLifecycleOwner;
|
|
||||||
@Mock private FingerprintManager mFingerprintManager;
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
private Application mApplication;
|
private Application mApplication;
|
||||||
|
|
||||||
private FingerprintEnrollIntroViewModel newFingerprintEnrollIntroViewModel(
|
private FingerprintEnrollIntroViewModel newFingerprintEnrollIntroViewModel(
|
||||||
@NonNull FingerprintRepository fingerprintRepository) {
|
@NonNull FingerprintRepository fingerprintRepository,
|
||||||
|
@NonNull EnrollmentRequest enrollmentRequest) {
|
||||||
final FingerprintEnrollIntroViewModel viewModel =
|
final FingerprintEnrollIntroViewModel viewModel =
|
||||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository,
|
||||||
|
enrollmentRequest, TEST_USER_ID);
|
||||||
// MediatorLiveData won't update itself unless observed
|
// MediatorLiveData won't update itself unless observed
|
||||||
viewModel.getPageStatusLiveData().observeForever(event -> {});
|
viewModel.getPageStatusLiveData().observeForever(event -> {});
|
||||||
return viewModel;
|
return viewModel;
|
||||||
@@ -92,16 +93,18 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testPageStatusLiveDataDefaultValue() {
|
public void testPageStatusLiveDataDefaultValue() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
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_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testClearActionLiveData() {
|
public void testClearActionLiveData() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
final MutableLiveData<Integer> actionLiveData =
|
final MutableLiveData<Integer> actionLiveData =
|
||||||
(MutableLiveData<Integer>) viewModel.getActionLiveData();
|
(MutableLiveData<Integer>) viewModel.getActionLiveData();
|
||||||
@@ -116,40 +119,32 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGetEnrollmentRequest() {
|
public void testGetEnrollmentRequest() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
viewModel.setEnrollmentRequest(request);
|
assertThat(viewModel.getRequest()).isNotNull();
|
||||||
|
|
||||||
assertThat(viewModel.getEnrollmentRequest()).isEqualTo(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnStartToUpdateEnrollableStatusOk_isSuw() {
|
public void testOnStartToUpdateEnrollableStatusOk_isSuw() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
final int userId = 44;
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newIsSuwRequest(mApplication));
|
||||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnStartToUpdateEnrollableStatusReachMax_isSuw() {
|
public void testOnStartToUpdateEnrollableStatusReachMax_isSuw() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 1);
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
final int userId = 44;
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newIsSuwRequest(mApplication));
|
||||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||||
}
|
}
|
||||||
@@ -196,27 +191,21 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testOnStartToUpdateEnrollableStatusOk(@NonNull EnrollmentRequest request) {
|
private void testOnStartToUpdateEnrollableStatusOk(@NonNull EnrollmentRequest request) {
|
||||||
final int userId = 45;
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
viewModel.setEnrollmentRequest(request);
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
request);
|
||||||
FingerprintEnrollIntroStatus status = viewModel.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(
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 5);
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
final int userId = 45;
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
viewModel.setEnrollmentRequest(request);
|
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 5);
|
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
request);
|
||||||
FingerprintEnrollIntroStatus status = viewModel.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);
|
||||||
}
|
}
|
||||||
@@ -224,7 +213,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void textCanAssumeUdfps_forUdfpsUltrasonicSensor() {
|
public void textCanAssumeUdfps_forUdfpsUltrasonicSensor() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
assertThat(viewModel.canAssumeUdfps()).isEqualTo(true);
|
assertThat(viewModel.canAssumeUdfps()).isEqualTo(true);
|
||||||
}
|
}
|
||||||
@@ -232,7 +222,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void textCanAssumeUdfps_forRearSensor() {
|
public void textCanAssumeUdfps_forRearSensor() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_REAR, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_REAR, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
assertThat(viewModel.canAssumeUdfps()).isEqualTo(false);
|
assertThat(viewModel.canAssumeUdfps()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
@@ -243,8 +234,9 @@ 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);
|
||||||
final FingerprintEnrollIntroViewModel viewModel =
|
final FingerprintEnrollIntroViewModel viewModel = new FingerprintEnrollIntroViewModel(
|
||||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
mApplication, fingerprintRepository, newAllFalseRequest(mApplication),
|
||||||
|
TEST_USER_ID);
|
||||||
|
|
||||||
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(true);
|
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(true);
|
||||||
assertThat(viewModel.isParentalConsentRequired()).isEqualTo(true);
|
assertThat(viewModel.isParentalConsentRequired()).isEqualTo(true);
|
||||||
@@ -259,23 +251,22 @@ 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);
|
||||||
final FingerprintEnrollIntroViewModel viewModel =
|
final FingerprintEnrollIntroViewModel viewModel = new FingerprintEnrollIntroViewModel(
|
||||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
mApplication, fingerprintRepository, newAllFalseRequest(mApplication),
|
||||||
|
TEST_USER_ID);
|
||||||
|
|
||||||
final int userId = 33;
|
when(fingerprintRepository.isDisabledByAdmin(mApplication, TEST_USER_ID)).thenReturn(true);
|
||||||
viewModel.setUserId(userId);
|
|
||||||
|
|
||||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(true);
|
|
||||||
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(true);
|
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(true);
|
||||||
|
|
||||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(false);
|
when(fingerprintRepository.isDisabledByAdmin(mApplication, TEST_USER_ID)).thenReturn(false);
|
||||||
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(false);
|
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetHasScrolledToBottom() {
|
public void testSetHasScrolledToBottom() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
viewModel.setHasScrolledToBottom(true);
|
viewModel.setHasScrolledToBottom(true);
|
||||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
@@ -288,17 +279,13 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnNextButtonClick_enrollNext() {
|
public void testOnNextButtonClick_enrollNext() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
final int userId = 46;
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
|
||||||
|
|
||||||
// Set latest status to FINGERPRINT_ENROLLABLE_OK
|
// Set latest status to FINGERPRINT_ENROLLABLE_OK
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newIsSuwRequest(mApplication));
|
||||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||||
|
|
||||||
@@ -311,17 +298,13 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnNextButtonClick_doneAndFinish() {
|
public void testOnNextButtonClick_doneAndFinish() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
|
||||||
final int userId = 46;
|
|
||||||
viewModel.setUserId(userId);
|
|
||||||
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, TEST_USER_ID, 1);
|
||||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||||
|
|
||||||
viewModel.onStart(mLifecycleOwner);
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newIsSuwRequest(mApplication));
|
||||||
FingerprintEnrollIntroStatus status = viewModel.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);
|
||||||
|
|
||||||
@@ -335,7 +318,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testOnSkipOrCancelButtonClick() {
|
public void testOnSkipOrCancelButtonClick() {
|
||||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||||
|
newAllFalseRequest(mApplication));
|
||||||
|
|
||||||
viewModel.onSkipOrCancelButtonClick();
|
viewModel.onSkipOrCancelButtonClick();
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ import org.mockito.junit.MockitoRule;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class FingerprintEnrollProgressViewModelTest {
|
public class FingerprintEnrollProgressViewModelTest {
|
||||||
|
|
||||||
|
private static final int TEST_USER_ID = 334;
|
||||||
|
|
||||||
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||||
|
|
||||||
@@ -70,23 +72,22 @@ public class FingerprintEnrollProgressViewModelTest {
|
|||||||
when(mApplication.getResources()).thenReturn(mResources);
|
when(mApplication.getResources()).thenReturn(mResources);
|
||||||
when(mResources.getBoolean(R.bool.enrollment_message_display_controller_flag))
|
when(mResources.getBoolean(R.bool.enrollment_message_display_controller_flag))
|
||||||
.thenReturn(false);
|
.thenReturn(false);
|
||||||
mViewModel = new FingerprintEnrollProgressViewModel(mApplication, mFingerprintUpdater);
|
mViewModel = new FingerprintEnrollProgressViewModel(mApplication, mFingerprintUpdater,
|
||||||
|
TEST_USER_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStartEnrollment() {
|
public void testStartEnrollment() {
|
||||||
@EnrollReason final int enrollReason = ENROLL_FIND_SENSOR;
|
@EnrollReason final int enrollReason = ENROLL_FIND_SENSOR;
|
||||||
final int userId = 334;
|
|
||||||
final byte[] token = new byte[] { 1, 2, 3 };
|
final byte[] token = new byte[] { 1, 2, 3 };
|
||||||
mViewModel.setToken(token);
|
mViewModel.setToken(token);
|
||||||
mViewModel.setUserId(userId);
|
|
||||||
|
|
||||||
// Start enrollment
|
// Start enrollment
|
||||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||||
|
|
||||||
assertThat(ret).isTrue();
|
assertThat(ret).isTrue();
|
||||||
verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
|
verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
|
||||||
eq(userId), any(EnrollmentCallback.class), eq(enrollReason));
|
eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -102,17 +103,15 @@ public class FingerprintEnrollProgressViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testCancelEnrollment() {
|
public void testCancelEnrollment() {
|
||||||
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
||||||
final int userId = 334;
|
|
||||||
final byte[] token = new byte[] { 1, 2, 3 };
|
final byte[] token = new byte[] { 1, 2, 3 };
|
||||||
mViewModel.setToken(token);
|
mViewModel.setToken(token);
|
||||||
mViewModel.setUserId(userId);
|
|
||||||
|
|
||||||
final TestWrapper<CancellationSignal> signalWrapper = new TestWrapper<>();
|
final TestWrapper<CancellationSignal> signalWrapper = new TestWrapper<>();
|
||||||
doAnswer(invocation -> {
|
doAnswer(invocation -> {
|
||||||
signalWrapper.mValue = invocation.getArgument(1);
|
signalWrapper.mValue = invocation.getArgument(1);
|
||||||
return null;
|
return null;
|
||||||
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
||||||
eq(userId), any(EnrollmentCallback.class), anyInt());
|
eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt());
|
||||||
|
|
||||||
// Start enrollment
|
// Start enrollment
|
||||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||||
@@ -128,17 +127,15 @@ public class FingerprintEnrollProgressViewModelTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testProgressUpdate() {
|
public void testProgressUpdate() {
|
||||||
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
||||||
final int userId = 334;
|
|
||||||
final byte[] token = new byte[] { 1, 2, 3 };
|
final byte[] token = new byte[] { 1, 2, 3 };
|
||||||
mViewModel.setToken(token);
|
mViewModel.setToken(token);
|
||||||
mViewModel.setUserId(userId);
|
|
||||||
|
|
||||||
final TestWrapper<EnrollmentCallback> callbackWrapper = new TestWrapper<>();
|
final TestWrapper<EnrollmentCallback> callbackWrapper = new TestWrapper<>();
|
||||||
doAnswer(invocation -> {
|
doAnswer(invocation -> {
|
||||||
callbackWrapper.mValue = invocation.getArgument(3);
|
callbackWrapper.mValue = invocation.getArgument(3);
|
||||||
return null;
|
return null;
|
||||||
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
||||||
eq(userId), any(EnrollmentCallback.class), anyInt());
|
eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt());
|
||||||
|
|
||||||
// Start enrollment
|
// Start enrollment
|
||||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ import androidx.test.core.app.ApplicationProvider;
|
|||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
|
||||||
import com.android.settings.password.SetupSkipDialog;
|
import com.android.settings.password.SetupSkipDialog;
|
||||||
import com.android.settings.testutils.InstantTaskExecutorRule;
|
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||||
|
|
||||||
@@ -70,28 +69,21 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
mApplication = ApplicationProvider.getApplicationContext();
|
mApplication = ApplicationProvider.getApplicationContext();
|
||||||
mFingerprintRepository = new FingerprintRepository(mFingerprintManager);
|
mFingerprintRepository = new FingerprintRepository(mFingerprintManager);
|
||||||
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||||
mKeyguardManager);
|
mKeyguardManager, newAllFalseRequest(mApplication));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetRequest() {
|
public void testGetRequest() {
|
||||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
assertThat(mViewModel.getRequest()).isNotNull();
|
||||||
assertThat(mViewModel.getRequest()).isNull();
|
|
||||||
|
|
||||||
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
|
||||||
mViewModel.setRequest(request);
|
|
||||||
assertThat(mViewModel.getRequest()).isEqualTo(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetNextActivityBaseIntentExtras() {
|
public void testGetNextActivityBaseIntentExtras() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
assertThat(mViewModel.getNextActivityBaseIntentExtras()).isNotNull();
|
assertThat(mViewModel.getNextActivityBaseIntentExtras()).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelaySkip1Result() {
|
public void testOnContinueEnrollActivityResult_shouldRelaySkip1Result() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final ActivityResult result = new ActivityResult(RESULT_SKIP, null);
|
final ActivityResult result = new ActivityResult(RESULT_SKIP, null);
|
||||||
|
|
||||||
// Run onContinueEnrollActivityResult
|
// Run onContinueEnrollActivityResult
|
||||||
@@ -102,7 +94,6 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelaySkip2Result() {
|
public void testOnContinueEnrollActivityResult_shouldRelaySkip2Result() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final ActivityResult result = new ActivityResult(SetupSkipDialog.RESULT_SKIP, null);
|
final ActivityResult result = new ActivityResult(SetupSkipDialog.RESULT_SKIP, null);
|
||||||
|
|
||||||
// Run onContinueEnrollActivityResult
|
// Run onContinueEnrollActivityResult
|
||||||
@@ -113,7 +104,6 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataTimeoutResult() {
|
public void testOnContinueEnrollActivityResult_shouldRelayNullDataTimeoutResult() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, null);
|
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, null);
|
||||||
|
|
||||||
// Run onContinueEnrollActivityResult
|
// Run onContinueEnrollActivityResult
|
||||||
@@ -127,7 +117,6 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataTimeoutResult() {
|
public void testOnContinueEnrollActivityResult_shouldRelayWithDataTimeoutResult() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final Intent intent = new Intent("testAction");
|
final Intent intent = new Intent("testAction");
|
||||||
intent.putExtra("testKey", "testValue");
|
intent.putExtra("testKey", "testValue");
|
||||||
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, intent);
|
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, intent);
|
||||||
@@ -143,7 +132,6 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResult() {
|
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResult() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
||||||
|
|
||||||
// Run onContinueEnrollActivityResult
|
// Run onContinueEnrollActivityResult
|
||||||
@@ -157,7 +145,6 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResult() {
|
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResult() {
|
||||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
|
||||||
final Intent intent = new Intent("testAction");
|
final Intent intent = new Intent("testAction");
|
||||||
intent.putExtra("testKey", "testValue");
|
intent.putExtra("testKey", "testValue");
|
||||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, intent);
|
final ActivityResult result = new ActivityResult(RESULT_FINISHED, intent);
|
||||||
@@ -173,11 +160,12 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResultAsNewData() {
|
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResultAsNewData() {
|
||||||
|
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||||
|
mKeyguardManager, newIsSuwRequest(mApplication));
|
||||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
||||||
final int userId = 111;
|
final int userId = 111;
|
||||||
final int numOfFp = 4;
|
final int numOfFp = 4;
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
||||||
mViewModel.setRequest(newIsSuwRequest(mApplication));
|
|
||||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
||||||
|
|
||||||
// Run onContinueEnrollActivityResult
|
// Run onContinueEnrollActivityResult
|
||||||
@@ -194,11 +182,12 @@ public class FingerprintEnrollmentViewModelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResultAsNewData() {
|
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResultAsNewData() {
|
||||||
|
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||||
|
mKeyguardManager, newIsSuwRequest(mApplication));
|
||||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
||||||
final int userId = 20;
|
final int userId = 20;
|
||||||
final int numOfFp = 9;
|
final int numOfFp = 9;
|
||||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
||||||
mViewModel.setRequest(newIsSuwRequest(mApplication));
|
|
||||||
final String action = "testAction";
|
final String action = "testAction";
|
||||||
final String key = "testKey";
|
final String key = "testKey";
|
||||||
final String value = "testValue";
|
final String value = "testValue";
|
||||||
|
|||||||
Reference in New Issue
Block a user