Refine FingerprintEnrollmentActivity
1. Add missing test cases for DeviceFoldedViewModel, DeviceRotationViewModel, and FingerprintEnrollFindSensorViewModel 2. Move most of init value of ViewModels into getDefaultViewModelCreationExtras 3. Fix FindSfpsFragment lottie because of incorrect rotation value. 4. Feed configuration change into DeviceFoldedViewModel Bug: 260957195 Test: atest CredentialModelTest AutoCredentialViewModelTest DeviceFoldedViewModelTest DeviceRotationViewModelTest FingerprintEnrollFindSensorViewModelTest FingerprintEnrollIntroViewModelTest FingerprintEnrollProgressViewModelTest FingerprintEnrollmentViewModelTest FingerprintEnrollmentActivityTest Change-Id: Ied55a895bc1774af5bdd256eccd806aaaa1680ef
This commit is contained in:
@@ -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