Implement sfps enroll improvement feature with feature provider

Bug: 288155127
Test: Manually
Test: atest FingerprintEnrollEnrollingTest.java
Change-Id: Idb6e5afab4b9cbf8f2ed26819a55dcb34acb1ab9
This commit is contained in:
Wu Ahan
2023-09-11 04:54:42 +00:00
committed by MiltonWu
parent 6a9297df54
commit 2ffe187d1b
13 changed files with 369 additions and 41 deletions

View File

@@ -53,6 +53,9 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Vibrator;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.view.Display;
import android.view.Surface;
import android.view.View;
@@ -62,6 +65,9 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeatureImpl;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.RingProgressBar;
@@ -71,6 +77,7 @@ import com.google.android.setupdesign.GlifLayout;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -93,6 +100,8 @@ public class FingerprintEnrollEnrollingTest {
private static final String ENROLL_PROGRESS_COLOR_LIGHT = "#699FF3";
private static final String ENROLL_PROGRESS_COLOR_DARK = "#7DA7F1";
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Mock private FingerprintManager mFingerprintManager;
@@ -594,6 +603,23 @@ public class FingerprintEnrollEnrollingTest {
assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.GONE);
}
@Test
@RequiresFlagsDisabled(Flags.FLAG_SFPS_ENROLL_REFINEMENT)
public void testFingerprintFeatureProvider_impl() {
// We should always get default implementation when the flag is disabled.
assertThat(FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider())
.isInstanceOf(FingerprintFeatureProviderImpl.class);
}
@Test
@RequiresFlagsDisabled(Flags.FLAG_SFPS_ENROLL_REFINEMENT)
public void testFingerprintFeatureProvider_sfpsEnrollmentFeatureImpl() {
// We should always get default implementation when the flag is disabled.
assertThat(FeatureFactory.getFeatureFactory()
.getFingerprintFeatureProvider().getSfpsEnrollmentFeature())
.isInstanceOf(SfpsEnrollmentFeatureImpl.class);
}
private GlifLayout getLayout() {
return (GlifLayout) mActivity.findViewById(R.id.setup_wizard_layout);
}

View File

@@ -24,6 +24,7 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.biometrics.face.FaceFeatureProvider;
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
import com.android.settings.bluetooth.BluetoothFeatureProvider;
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
@@ -80,6 +81,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public final AccountFeatureProvider mAccountFeatureProvider;
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
public final FaceFeatureProvider mFaceFeatureProvider;
public final FingerprintFeatureProvider mFingerprintFeatureProvider;
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
public PanelFeatureProvider panelFeatureProvider;
@@ -132,6 +134,7 @@ public class FakeFeatureFactory extends FeatureFactory {
panelFeatureProvider = mock(PanelFeatureProvider.class);
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
mFingerprintFeatureProvider = mock(FingerprintFeatureProvider.class);
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
@@ -256,6 +259,11 @@ public class FakeFeatureFactory extends FeatureFactory {
return mFaceFeatureProvider;
}
@Override
public FingerprintFeatureProvider getFingerprintFeatureProvider() {
return mFingerprintFeatureProvider;
}
@Override
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
return mBiometricsRepositoryProvider;

View File

@@ -22,6 +22,7 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
import com.android.settings.accounts.AccountFeatureProvider
import com.android.settings.applications.ApplicationFeatureProvider
import com.android.settings.biometrics.face.FaceFeatureProvider
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
import com.android.settings.bluetooth.BluetoothFeatureProvider
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
@@ -120,6 +121,8 @@ class FakeFeatureFactory : FeatureFactory() {
get() = TODO("Not yet implemented")
override val faceFeatureProvider: FaceFeatureProvider
get() = TODO("Not yet implemented")
override val fingerprintFeatureProvider: FingerprintFeatureProvider
get() = TODO("Not yet implemented")
override val biometricsRepositoryProvider: BiometricsRepositoryProvider
get() = TODO("Not yet implemented")
override val wifiTrackerLibProvider: WifiTrackerLibProvider

View File

@@ -24,6 +24,7 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.biometrics.face.FaceFeatureProvider;
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
import com.android.settings.bluetooth.BluetoothFeatureProvider;
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
@@ -79,6 +80,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public final AccountFeatureProvider mAccountFeatureProvider;
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
public final FaceFeatureProvider mFaceFeatureProvider;
public final FingerprintFeatureProvider mFingerprintFeatureProvider;
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
public PanelFeatureProvider panelFeatureProvider;
@@ -131,6 +133,7 @@ public class FakeFeatureFactory extends FeatureFactory {
panelFeatureProvider = mock(PanelFeatureProvider.class);
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
mFingerprintFeatureProvider = mock(FingerprintFeatureProvider.class);
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
@@ -255,6 +258,11 @@ public class FakeFeatureFactory extends FeatureFactory {
return mFaceFeatureProvider;
}
@Override
public FingerprintFeatureProvider getFingerprintFeatureProvider() {
return mFingerprintFeatureProvider;
}
@Override
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
return mBiometricsRepositoryProvider;