Loading src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -33,11 +33,14 @@ import android.view.animation.AccelerateInterpolator; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.R; import java.util.function.Function; import java.util.function.Function; public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { @VisibleForTesting public static final int HELP_ANIMATOR_DURATION = 550; @Nullable @Nullable private FingerprintManager mFingerprintManager = null; private FingerprintManager mFingerprintManager = null; Loading Loading @@ -96,12 +99,11 @@ public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { @Override @Override public Animator getHelpAnimator(@NonNull View target) { public Animator getHelpAnimator(@NonNull View target) { final float translationX = 40; final float translationX = 40; final int duration = 550; final ObjectAnimator help = ObjectAnimator.ofFloat(target, final ObjectAnimator help = ObjectAnimator.ofFloat(target, "translationX" /* propertyName */, "translationX" /* propertyName */, 0, translationX, -1 * translationX, translationX, 0f); 0, translationX, -1 * translationX, translationX, 0f); help.setInterpolator(new AccelerateInterpolator()); help.setInterpolator(new AccelerateInterpolator()); help.setDuration(duration); help.setDuration(HELP_ANIMATOR_DURATION); help.setAutoCancel(false); help.setAutoCancel(false); return help; return help; } } Loading tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt +42 −67 Original line number Original line Diff line number Diff line Loading @@ -44,16 +44,24 @@ import org.mockito.Mockito.`when` as whenever @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class SfpsEnrollmentFeatureImplTest { class SfpsEnrollmentFeatureImplTest { private val STAGE_0 = 0 private val STAGE_1 = 1 private val STAGE_2 = 2 private val STAGE_3 = 3 private val STAGE_4 = 4 private val THRESHOLD_0 = 0f private val THRESHOLD_1 = .36f private val THRESHOLD_2 = .52f private val THRESHOLD_3 = .76f private val THRESHOLD_4 = 1f @get:Rule @get:Rule val mockito: MockitoRule = MockitoJUnit.rule() val mockito: MockitoRule = MockitoJUnit.rule() @Spy @Spy private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext() private val settingsPackageName = "com.android.settings" private lateinit var settingsContext: Context @Mock @Mock private lateinit var mockFingerprintManager: FingerprintManager private lateinit var mockFingerprintManager: FingerprintManager Loading @@ -61,31 +69,34 @@ class SfpsEnrollmentFeatureImplTest { @Before @Before fun setUp() { fun setUp() { assertThat(mSfpsEnrollmentFeatureImpl).isInstanceOf(SfpsEnrollmentFeatureImpl::class.java) whenever(context.getSystemService(FingerprintManager::class.java)) whenever(context.getSystemService(FingerprintManager::class.java)) .thenReturn(mockFingerprintManager) .thenReturn(mockFingerprintManager) doReturn(0f).`when`(mockFingerprintManager).getEnrollStageThreshold(0) doReturn(THRESHOLD_0).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_0) doReturn(0.36f).`when`(mockFingerprintManager).getEnrollStageThreshold(1) doReturn(THRESHOLD_1).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_1) doReturn(0.52f).`when`(mockFingerprintManager).getEnrollStageThreshold(2) doReturn(THRESHOLD_2).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_2) doReturn(0.76f).`when`(mockFingerprintManager).getEnrollStageThreshold(3) doReturn(THRESHOLD_3).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_3) doReturn(1f).`when`(mockFingerprintManager).getEnrollStageThreshold(4) doReturn(THRESHOLD_4).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_4) settingsContext = context.createPackageContext(settingsPackageName, 0) } } @Test @Test fun testGetEnrollStageThreshold() { fun testGetEnrollStageThreshold() { assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 0)).isEqualTo(0f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_0)) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 1)).isEqualTo(0.36f) .isEqualTo(THRESHOLD_0) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 2)).isEqualTo(0.52f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_1)) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 3)).isEqualTo(0.76f) .isEqualTo(THRESHOLD_1) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 4)).isEqualTo(1f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_2)) .isEqualTo(THRESHOLD_2) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_3)) .isEqualTo(THRESHOLD_3) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_4)) .isEqualTo(THRESHOLD_4) } } @Test @Test fun testGetHelpAnimator() { fun testGetHelpAnimator() { val mockView: View = mock(View::class.java) val mockView: View = mock(View::class.java) val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView) val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView) assertThat(animator.duration).isEqualTo(550) assertThat(animator.duration).isEqualTo(SfpsEnrollmentFeatureImpl.HELP_ANIMATOR_DURATION) } } @Test @Test Loading Loading @@ -115,42 +126,27 @@ class SfpsEnrollmentFeatureImplTest { assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_fingerprint_enroll_repeat_title") "security_settings_fingerprint_enroll_repeat_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_finger_center_title") "security_settings_sfps_enroll_finger_center_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_fingertip_title") "security_settings_sfps_enroll_fingertip_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_left_edge_title") "security_settings_sfps_enroll_left_edge_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_right_edge_title") "security_settings_sfps_enroll_right_edge_title", type, settingsPackageName) ) ) } } Loading @@ -159,43 +155,22 @@ class SfpsEnrollmentFeatureImplTest { val type = "raw" val type = "raw" assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_no_animation")) settingsContext.resources.getIdentifier( "sfps_lottie_no_animation", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_pad_center")) settingsContext.resources.getIdentifier( "sfps_lottie_pad_center", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_tip")) settingsContext.resources.getIdentifier( "sfps_lottie_tip", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_left_edge")) settingsContext.resources.getIdentifier( "sfps_lottie_left_edge", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_right_edge")) settingsContext.resources.getIdentifier( } "sfps_lottie_right_edge", type, private fun getSettingsResourcesId(type: String, name: String) : Int { settingsPackageName) return context.resources.getIdentifier(name, type, context.packageName) ) } } } } No newline at end of file Loading
src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -33,11 +33,14 @@ import android.view.animation.AccelerateInterpolator; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.R; import java.util.function.Function; import java.util.function.Function; public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { @VisibleForTesting public static final int HELP_ANIMATOR_DURATION = 550; @Nullable @Nullable private FingerprintManager mFingerprintManager = null; private FingerprintManager mFingerprintManager = null; Loading Loading @@ -96,12 +99,11 @@ public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { @Override @Override public Animator getHelpAnimator(@NonNull View target) { public Animator getHelpAnimator(@NonNull View target) { final float translationX = 40; final float translationX = 40; final int duration = 550; final ObjectAnimator help = ObjectAnimator.ofFloat(target, final ObjectAnimator help = ObjectAnimator.ofFloat(target, "translationX" /* propertyName */, "translationX" /* propertyName */, 0, translationX, -1 * translationX, translationX, 0f); 0, translationX, -1 * translationX, translationX, 0f); help.setInterpolator(new AccelerateInterpolator()); help.setInterpolator(new AccelerateInterpolator()); help.setDuration(duration); help.setDuration(HELP_ANIMATOR_DURATION); help.setAutoCancel(false); help.setAutoCancel(false); return help; return help; } } Loading
tests/unit/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImplTest.kt +42 −67 Original line number Original line Diff line number Diff line Loading @@ -44,16 +44,24 @@ import org.mockito.Mockito.`when` as whenever @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class SfpsEnrollmentFeatureImplTest { class SfpsEnrollmentFeatureImplTest { private val STAGE_0 = 0 private val STAGE_1 = 1 private val STAGE_2 = 2 private val STAGE_3 = 3 private val STAGE_4 = 4 private val THRESHOLD_0 = 0f private val THRESHOLD_1 = .36f private val THRESHOLD_2 = .52f private val THRESHOLD_3 = .76f private val THRESHOLD_4 = 1f @get:Rule @get:Rule val mockito: MockitoRule = MockitoJUnit.rule() val mockito: MockitoRule = MockitoJUnit.rule() @Spy @Spy private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext() private val settingsPackageName = "com.android.settings" private lateinit var settingsContext: Context @Mock @Mock private lateinit var mockFingerprintManager: FingerprintManager private lateinit var mockFingerprintManager: FingerprintManager Loading @@ -61,31 +69,34 @@ class SfpsEnrollmentFeatureImplTest { @Before @Before fun setUp() { fun setUp() { assertThat(mSfpsEnrollmentFeatureImpl).isInstanceOf(SfpsEnrollmentFeatureImpl::class.java) whenever(context.getSystemService(FingerprintManager::class.java)) whenever(context.getSystemService(FingerprintManager::class.java)) .thenReturn(mockFingerprintManager) .thenReturn(mockFingerprintManager) doReturn(0f).`when`(mockFingerprintManager).getEnrollStageThreshold(0) doReturn(THRESHOLD_0).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_0) doReturn(0.36f).`when`(mockFingerprintManager).getEnrollStageThreshold(1) doReturn(THRESHOLD_1).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_1) doReturn(0.52f).`when`(mockFingerprintManager).getEnrollStageThreshold(2) doReturn(THRESHOLD_2).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_2) doReturn(0.76f).`when`(mockFingerprintManager).getEnrollStageThreshold(3) doReturn(THRESHOLD_3).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_3) doReturn(1f).`when`(mockFingerprintManager).getEnrollStageThreshold(4) doReturn(THRESHOLD_4).`when`(mockFingerprintManager).getEnrollStageThreshold(STAGE_4) settingsContext = context.createPackageContext(settingsPackageName, 0) } } @Test @Test fun testGetEnrollStageThreshold() { fun testGetEnrollStageThreshold() { assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 0)).isEqualTo(0f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_0)) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 1)).isEqualTo(0.36f) .isEqualTo(THRESHOLD_0) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 2)).isEqualTo(0.52f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_1)) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 3)).isEqualTo(0.76f) .isEqualTo(THRESHOLD_1) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 4)).isEqualTo(1f) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_2)) .isEqualTo(THRESHOLD_2) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_3)) .isEqualTo(THRESHOLD_3) assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, STAGE_4)) .isEqualTo(THRESHOLD_4) } } @Test @Test fun testGetHelpAnimator() { fun testGetHelpAnimator() { val mockView: View = mock(View::class.java) val mockView: View = mock(View::class.java) val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView) val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView) assertThat(animator.duration).isEqualTo(550) assertThat(animator.duration).isEqualTo(SfpsEnrollmentFeatureImpl.HELP_ANIMATOR_DURATION) } } @Test @Test Loading Loading @@ -115,42 +126,27 @@ class SfpsEnrollmentFeatureImplTest { assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_fingerprint_enroll_repeat_title") "security_settings_fingerprint_enroll_repeat_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_finger_center_title") "security_settings_sfps_enroll_finger_center_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_fingertip_title") "security_settings_sfps_enroll_fingertip_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_left_edge_title") "security_settings_sfps_enroll_left_edge_title", type, settingsPackageName) ) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE) mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE) ).isEqualTo( ).isEqualTo( settingsContext.resources.getIdentifier( getSettingsResourcesId(type, "security_settings_sfps_enroll_right_edge_title") "security_settings_sfps_enroll_right_edge_title", type, settingsPackageName) ) ) } } Loading @@ -159,43 +155,22 @@ class SfpsEnrollmentFeatureImplTest { val type = "raw" val type = "raw" assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_no_animation")) settingsContext.resources.getIdentifier( "sfps_lottie_no_animation", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_pad_center")) settingsContext.resources.getIdentifier( "sfps_lottie_pad_center", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_tip")) settingsContext.resources.getIdentifier( "sfps_lottie_tip", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_left_edge")) settingsContext.resources.getIdentifier( "sfps_lottie_left_edge", type, settingsPackageName) ) assertThat( assertThat( mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE) mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE) ).isEqualTo( ).isEqualTo(getSettingsResourcesId(type, "sfps_lottie_right_edge")) settingsContext.resources.getIdentifier( } "sfps_lottie_right_edge", type, private fun getSettingsResourcesId(type: String, name: String) : Int { settingsPackageName) return context.resources.getIdentifier(name, type, context.packageName) ) } } } } No newline at end of file