Add tests for SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS.
Bug: 260617060 Test: atest FingerprintEnrollEnrollingTest Change-Id: I82fdadfd57c2f7f5adef423250ee6c880b4d6b1b
This commit is contained in:
@@ -168,7 +168,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
||||
private boolean mCanAssumeUdfps;
|
||||
private boolean mCanAssumeSfps;
|
||||
@Nullable private ProgressBar mProgressBar;
|
||||
@Nullable private UdfpsEnrollHelper mUdfpsEnrollHelper;
|
||||
@VisibleForTesting
|
||||
@Nullable
|
||||
UdfpsEnrollHelper mUdfpsEnrollHelper;
|
||||
// TODO(b/260617060): Do not hard-code mScaleFactor, referring to AuthController.
|
||||
private float mScaleFactor = 1.0f;
|
||||
private ObjectAnimator mProgressAnim;
|
||||
|
@@ -38,6 +38,7 @@ import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
@@ -77,8 +78,9 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
|
||||
private final Interpolator mCheckmarkInterpolator;
|
||||
@NonNull
|
||||
private final Paint mBackgroundPaint;
|
||||
@VisibleForTesting
|
||||
@NonNull
|
||||
private final Paint mFillPaint;
|
||||
final Paint mFillPaint;
|
||||
@NonNull
|
||||
private final Vibrator mVibrator;
|
||||
@NonNull
|
||||
|
@@ -38,7 +38,10 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.hardware.biometrics.ComponentInfoInternal;
|
||||
import android.hardware.biometrics.SensorProperties;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
@@ -48,14 +51,18 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
import android.os.Vibrator;
|
||||
import android.util.FeatureFlagUtils;
|
||||
import android.view.Display;
|
||||
import android.view.Surface;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.widget.RingProgressBar;
|
||||
|
||||
import com.airbnb.lottie.LottieAnimationView;
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -73,6 +80,9 @@ import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class FingerprintEnrollEnrollingTest {
|
||||
private static final String ENROLL_PROGRESS_COLOR_LIGHT = "#699FF3";
|
||||
private static final String ENROLL_PROGRESS_COLOR_DARK = "#7DA7F1";
|
||||
|
||||
|
||||
@Mock private FingerprintManager mFingerprintManager;
|
||||
|
||||
@@ -180,6 +190,129 @@ public class FingerprintEnrollEnrollingTest {
|
||||
assertThat(observedLottieAssetOrder).isEqualTo(expectedLottieAssetOrder);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fingerprintUdfpsOverlayEnrollment_showOverlayPortrait() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_0);
|
||||
|
||||
final FrameLayout portraitLayoutContainer = mActivity.findViewById(R.id.layout_container);
|
||||
final UdfpsEnrollView udfpsEnrollView =
|
||||
portraitLayoutContainer.findViewById(R.id.udfps_animation_view);
|
||||
assertThat(udfpsEnrollView).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fingerprintUdfpsOverlayEnrollment_showOverlayLandscape() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_90);
|
||||
|
||||
final GlifLayout defaultLayout = mActivity.findViewById(R.id.setup_wizard_layout);
|
||||
final UdfpsEnrollView udfpsEnrollView =
|
||||
defaultLayout.findViewById(R.id.udfps_animation_view);
|
||||
assertThat(udfpsEnrollView).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fingerprintUdfpsOverlayEnrollment_usesCorrectProgressBarFillColor() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
final TypedArray ta = mActivity.obtainStyledAttributes(null,
|
||||
R.styleable.BiometricsEnrollView, R.attr.biometricsEnrollStyle,
|
||||
R.style.BiometricsEnrollStyle);
|
||||
final int progressColor = ta.getColor(
|
||||
R.styleable.BiometricsEnrollView_biometricsEnrollProgress, 0);
|
||||
final ImageView progressBar = mActivity.findViewById(
|
||||
R.id.udfps_enroll_animation_fp_progress_view);
|
||||
|
||||
configureSfpsStageColorTest();
|
||||
|
||||
assertThat(
|
||||
((UdfpsEnrollProgressBarDrawable) (progressBar.getDrawable()))
|
||||
.mFillPaint.getColor())
|
||||
.isEqualTo(progressColor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forwardEnrollProgressEvents() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
|
||||
EnrollListener listener = new EnrollListener(mActivity);
|
||||
mActivity.onEnrollmentProgressChange(20, 10);
|
||||
assertThat(listener.mProgress).isTrue();
|
||||
assertThat(listener.mHelp).isFalse();
|
||||
assertThat(listener.mAcquired).isFalse();
|
||||
assertThat(listener.mPointerUp).isFalse();
|
||||
assertThat(listener.mPointerDown).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forwardEnrollHelpEvents() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
|
||||
EnrollListener listener = new EnrollListener(mActivity);
|
||||
mActivity.onEnrollmentHelp(20, "test enrollment help");
|
||||
assertThat(listener.mProgress).isFalse();
|
||||
assertThat(listener.mHelp).isTrue();
|
||||
assertThat(listener.mAcquired).isFalse();
|
||||
assertThat(listener.mPointerUp).isFalse();
|
||||
assertThat(listener.mPointerDown).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forwardEnrollAcquiredEvents() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
|
||||
EnrollListener listener = new EnrollListener(mActivity);
|
||||
mActivity.onEnrollmentProgressChange(20, 10);
|
||||
mActivity.onAcquired(false);
|
||||
assertThat(listener.mProgress).isTrue();
|
||||
assertThat(listener.mHelp).isFalse();
|
||||
assertThat(listener.mAcquired).isTrue();
|
||||
assertThat(listener.mPointerUp).isFalse();
|
||||
assertThat(listener.mPointerDown).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forwardEnrollPointerDownEvents() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
|
||||
EnrollListener listener = new EnrollListener(mActivity);
|
||||
mActivity.onPointerDown(0);
|
||||
assertThat(listener.mProgress).isFalse();
|
||||
assertThat(listener.mHelp).isFalse();
|
||||
assertThat(listener.mAcquired).isFalse();
|
||||
assertThat(listener.mPointerUp).isFalse();
|
||||
assertThat(listener.mPointerDown).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forwardEnrollPointerUpEvents() {
|
||||
FeatureFlagUtils.setEnabled(mContext,
|
||||
FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
|
||||
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||
|
||||
EnrollListener listener = new EnrollListener(mActivity);
|
||||
mActivity.onPointerUp(0);
|
||||
assertThat(listener.mProgress).isFalse();
|
||||
assertThat(listener.mHelp).isFalse();
|
||||
assertThat(listener.mAcquired).isFalse();
|
||||
assertThat(listener.mPointerUp).isTrue();
|
||||
assertThat(listener.mPointerDown).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() {
|
||||
initializeActivityFor(TYPE_POWER_BUTTON);
|
||||
@@ -273,6 +406,14 @@ public class FingerprintEnrollEnrollingTest {
|
||||
|
||||
final String appliedThemes = mTheme.toString();
|
||||
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||
|
||||
final Configuration config = mContext.getResources().getConfiguration();
|
||||
final boolean isDarkThemeOn = (config.uiMode & Configuration.UI_MODE_NIGHT_MASK)
|
||||
== Configuration.UI_MODE_NIGHT_YES;
|
||||
final int currentColor = mContext.getColor(R.color.udfps_enroll_progress);
|
||||
assertThat(currentColor).isEqualTo(Color.parseColor(isDarkThemeOn
|
||||
? ENROLL_PROGRESS_COLOR_DARK : ENROLL_PROGRESS_COLOR_LIGHT));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -348,4 +489,43 @@ public class FingerprintEnrollEnrollingTest {
|
||||
|
||||
return callbackCaptor.getValue();
|
||||
}
|
||||
|
||||
private static class EnrollListener implements UdfpsEnrollHelper.Listener {
|
||||
private final FingerprintEnrollEnrolling mActivity;
|
||||
private boolean mProgress = false;
|
||||
private boolean mHelp = false;
|
||||
private boolean mAcquired = false;
|
||||
private boolean mPointerDown = false;
|
||||
private boolean mPointerUp = false;
|
||||
|
||||
EnrollListener(FingerprintEnrollEnrolling activity) {
|
||||
mActivity = activity;
|
||||
mActivity.mUdfpsEnrollHelper.setListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnrollmentProgress(int remaining, int totalSteps) {
|
||||
mProgress = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnrollmentHelp(int remaining, int totalSteps) {
|
||||
mHelp = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAcquired(boolean animateIfLastStepGood) {
|
||||
mAcquired = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPointerDown(int sensorId) {
|
||||
mPointerDown = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPointerUp(int sensorId) {
|
||||
mPointerUp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user