Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +22 −31 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.biometrics.fingerprint; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_USER_CANCELED; import static android.text.Layout.HYPHENATION_FREQUENCY_NONE; import android.animation.Animator; import android.animation.ObjectAnimator; Loading Loading @@ -341,7 +342,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setDescriptionText(R.string.security_settings_udfps_enroll_start_message); } else if (mCanAssumeSfps) { setContentView(R.layout.sfps_enroll_enrolling); setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message); setHelpAnimation(); } else { setContentView(R.layout.fingerprint_enroll_enrolling); Loading Loading @@ -614,7 +614,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_sfps_enroll_finger_center_title) ); configureEnrollmentStage("", R.raw.udfps_center_hint_lottie); configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } break; Loading @@ -628,7 +628,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { getString(R.string.security_settings_fingerprint_enroll_repeat_message) ); // TODO(b/228100413) Could customize guided lottie animation configureEnrollmentStage("", R.raw.udfps_center_hint_lottie); configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } break; case STAGE_FINGERTIP: Loading @@ -638,7 +638,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_tip_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_tip_hint_lottie); configureEnrollmentStage(R.raw.udfps_tip_hint_lottie); } break; case STAGE_LEFT_EDGE: Loading @@ -648,7 +648,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_side_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_left_edge_hint_lottie); configureEnrollmentStage(R.raw.udfps_left_edge_hint_lottie); } else if (mIllustrationLottie == null) { if (isStageHalfCompleted()) { setDescriptionText( Loading @@ -665,7 +665,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_side_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_right_edge_hint_lottie); configureEnrollmentStage(R.raw.udfps_right_edge_hint_lottie); } else if (mIllustrationLottie == null) { if (isStageHalfCompleted()) { Loading Loading @@ -717,10 +717,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { 0 ) ); configureEnrollmentStage( getString(R.string.security_settings_sfps_enroll_start_message), R.raw.sfps_lottie_no_animation ); configureEnrollmentStage(R.raw.sfps_lottie_no_animation); } break; Loading @@ -728,10 +725,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_finger_center_title); if (!mHaveShownSfpsCenterLottie && mIllustrationLottie != null) { mHaveShownSfpsCenterLottie = true; configureEnrollmentStage( getString(R.string.security_settings_sfps_enroll_start_message), R.raw.sfps_lottie_pad_center ); configureEnrollmentStage(R.raw.sfps_lottie_pad_center); } break; Loading @@ -739,7 +733,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_fingertip_title); if (!mHaveShownSfpsTipLottie && mIllustrationLottie != null) { mHaveShownSfpsTipLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_tip); configureEnrollmentStage(R.raw.sfps_lottie_tip); } break; Loading @@ -747,7 +741,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_left_edge_title); if (!mHaveShownSfpsLeftEdgeLottie && mIllustrationLottie != null) { mHaveShownSfpsLeftEdgeLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_left_edge); configureEnrollmentStage(R.raw.sfps_lottie_left_edge); } break; Loading @@ -755,7 +749,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_right_edge_title); if (!mHaveShownSfpsRightEdgeLottie && mIllustrationLottie != null) { mHaveShownSfpsRightEdgeLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_right_edge); configureEnrollmentStage(R.raw.sfps_lottie_right_edge); } break; Loading @@ -766,7 +760,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { // announce a different string for a11y upon entering the page. getLayout().setHeaderText( R.string.security_settings_sfps_enroll_find_sensor_title); setDescriptionText(R.string.security_settings_sfps_enroll_start_message); final CharSequence description = getString( R.string.security_settings_sfps_enroll_find_sensor_message); getLayout().getHeaderTextView().setContentDescription(description); Loading @@ -776,8 +769,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } private void configureEnrollmentStage(CharSequence description, @RawRes int lottie) { setDescriptionText(description); private void configureEnrollmentStage(@RawRes int lottie) { LottieCompositionFactory.fromRawRes(this, lottie) .addListener((c) -> { mIllustrationLottie.setComposition(c); Loading Loading @@ -995,16 +987,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } private void showError(CharSequence error) { if (mCanAssumeUdfps || mCanAssumeSfps) { setHeaderText(error); // Show nothing for subtitle when getting an error message. setDescriptionText(""); if (mCanAssumeSfps) { setHeaderText(error); if (!mHelpAnimation.isRunning()) { mHelpAnimation.start(); } applySfpsErrorDynamicColors(getApplicationContext(), true); } } else if (mCanAssumeUdfps) { setHeaderText(error); // Show nothing for subtitle when getting an error message. setDescriptionText(""); } else { mErrorText.setText(error); if (mErrorText.getVisibility() == View.INVISIBLE) { Loading Loading @@ -1228,17 +1220,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { final boolean isLandscape = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE; if (mCanAssumeSfps) { // hide the description descriptionMixin.getTextView().setVisibility(View.GONE); headerMixin.getTextView().setHyphenationFrequency(HYPHENATION_FREQUENCY_NONE); if (isLandscape) { headerMixin.setAutoTextSizeEnabled(true); headerMixin.getTextView().setMinLines(0); headerMixin.getTextView().setMaxLines(10); descriptionMixin.getTextView().setMinLines(0); descriptionMixin.getTextView().setMaxLines(10); } else { headerMixin.setAutoTextSizeEnabled(false); headerMixin.getTextView().setLines(4); // hide the description descriptionMixin.getTextView().setLines(0); } } } Loading tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.os.Vibrator; import android.util.FeatureFlagUtils; import android.view.Display; import android.view.Surface; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; Loading Loading @@ -433,6 +434,28 @@ public class FingerprintEnrollEnrollingTest { assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue(); } @Test public void fingerprintSfpsEnroll_descriptionTextVisibility() { initializeActivityFor(TYPE_POWER_BUTTON); mActivity.onEnrollmentProgressChange(1 /* steps */, 1 /* remaining */); assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.GONE); } @Test public void fingerprintUdfpsEnroll_descriptionTextVisibility() { initializeActivityFor(TYPE_UDFPS_OPTICAL); mActivity.onEnrollmentProgressChange(1 /* steps */, 1 /* remaining */); assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.VISIBLE); } private GlifLayout getLayout() { return (GlifLayout) mActivity.findViewById(R.id.setup_wizard_layout); } private void initializeActivityWithoutCreate(int sensorType) { final List<ComponentInfoInternal> componentInfo = new ArrayList<>(); final FingerprintSensorPropertiesInternal prop = Loading Loading @@ -465,6 +488,9 @@ public class FingerprintEnrollEnrollingTest { doReturn(mSfpsStageThresholds[stage]).when(mActivity).getStageThresholdSteps(stage); } doReturn(true).when(mSidecar).isEnrolling(); ReflectionHelpers.setField(mActivity, "mCanAssumeSfps", true); } else if (sensorType == TYPE_UDFPS_OPTICAL) { ReflectionHelpers.setField(mActivity, "mCanAssumeUdfps", true); } if (sensorType == TYPE_UDFPS_OPTICAL) { Loading Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +22 −31 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.biometrics.fingerprint; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_USER_CANCELED; import static android.text.Layout.HYPHENATION_FREQUENCY_NONE; import android.animation.Animator; import android.animation.ObjectAnimator; Loading Loading @@ -341,7 +342,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setDescriptionText(R.string.security_settings_udfps_enroll_start_message); } else if (mCanAssumeSfps) { setContentView(R.layout.sfps_enroll_enrolling); setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message); setHelpAnimation(); } else { setContentView(R.layout.fingerprint_enroll_enrolling); Loading Loading @@ -614,7 +614,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_sfps_enroll_finger_center_title) ); configureEnrollmentStage("", R.raw.udfps_center_hint_lottie); configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } break; Loading @@ -628,7 +628,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { getString(R.string.security_settings_fingerprint_enroll_repeat_message) ); // TODO(b/228100413) Could customize guided lottie animation configureEnrollmentStage("", R.raw.udfps_center_hint_lottie); configureEnrollmentStage(R.raw.udfps_center_hint_lottie); } break; case STAGE_FINGERTIP: Loading @@ -638,7 +638,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_tip_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_tip_hint_lottie); configureEnrollmentStage(R.raw.udfps_tip_hint_lottie); } break; case STAGE_LEFT_EDGE: Loading @@ -648,7 +648,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_side_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_left_edge_hint_lottie); configureEnrollmentStage(R.raw.udfps_left_edge_hint_lottie); } else if (mIllustrationLottie == null) { if (isStageHalfCompleted()) { setDescriptionText( Loading @@ -665,7 +665,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { mIllustrationLottie.setContentDescription( getString(R.string.security_settings_udfps_side_fingerprint_help) ); configureEnrollmentStage("", R.raw.udfps_right_edge_hint_lottie); configureEnrollmentStage(R.raw.udfps_right_edge_hint_lottie); } else if (mIllustrationLottie == null) { if (isStageHalfCompleted()) { Loading Loading @@ -717,10 +717,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { 0 ) ); configureEnrollmentStage( getString(R.string.security_settings_sfps_enroll_start_message), R.raw.sfps_lottie_no_animation ); configureEnrollmentStage(R.raw.sfps_lottie_no_animation); } break; Loading @@ -728,10 +725,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_finger_center_title); if (!mHaveShownSfpsCenterLottie && mIllustrationLottie != null) { mHaveShownSfpsCenterLottie = true; configureEnrollmentStage( getString(R.string.security_settings_sfps_enroll_start_message), R.raw.sfps_lottie_pad_center ); configureEnrollmentStage(R.raw.sfps_lottie_pad_center); } break; Loading @@ -739,7 +733,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_fingertip_title); if (!mHaveShownSfpsTipLottie && mIllustrationLottie != null) { mHaveShownSfpsTipLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_tip); configureEnrollmentStage(R.raw.sfps_lottie_tip); } break; Loading @@ -747,7 +741,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_left_edge_title); if (!mHaveShownSfpsLeftEdgeLottie && mIllustrationLottie != null) { mHaveShownSfpsLeftEdgeLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_left_edge); configureEnrollmentStage(R.raw.sfps_lottie_left_edge); } break; Loading @@ -755,7 +749,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setHeaderText(R.string.security_settings_sfps_enroll_right_edge_title); if (!mHaveShownSfpsRightEdgeLottie && mIllustrationLottie != null) { mHaveShownSfpsRightEdgeLottie = true; configureEnrollmentStage("", R.raw.sfps_lottie_right_edge); configureEnrollmentStage(R.raw.sfps_lottie_right_edge); } break; Loading @@ -766,7 +760,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { // announce a different string for a11y upon entering the page. getLayout().setHeaderText( R.string.security_settings_sfps_enroll_find_sensor_title); setDescriptionText(R.string.security_settings_sfps_enroll_start_message); final CharSequence description = getString( R.string.security_settings_sfps_enroll_find_sensor_message); getLayout().getHeaderTextView().setContentDescription(description); Loading @@ -776,8 +769,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } private void configureEnrollmentStage(CharSequence description, @RawRes int lottie) { setDescriptionText(description); private void configureEnrollmentStage(@RawRes int lottie) { LottieCompositionFactory.fromRawRes(this, lottie) .addListener((c) -> { mIllustrationLottie.setComposition(c); Loading Loading @@ -995,16 +987,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } private void showError(CharSequence error) { if (mCanAssumeUdfps || mCanAssumeSfps) { setHeaderText(error); // Show nothing for subtitle when getting an error message. setDescriptionText(""); if (mCanAssumeSfps) { setHeaderText(error); if (!mHelpAnimation.isRunning()) { mHelpAnimation.start(); } applySfpsErrorDynamicColors(getApplicationContext(), true); } } else if (mCanAssumeUdfps) { setHeaderText(error); // Show nothing for subtitle when getting an error message. setDescriptionText(""); } else { mErrorText.setText(error); if (mErrorText.getVisibility() == View.INVISIBLE) { Loading Loading @@ -1228,17 +1220,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { final boolean isLandscape = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE; if (mCanAssumeSfps) { // hide the description descriptionMixin.getTextView().setVisibility(View.GONE); headerMixin.getTextView().setHyphenationFrequency(HYPHENATION_FREQUENCY_NONE); if (isLandscape) { headerMixin.setAutoTextSizeEnabled(true); headerMixin.getTextView().setMinLines(0); headerMixin.getTextView().setMaxLines(10); descriptionMixin.getTextView().setMinLines(0); descriptionMixin.getTextView().setMaxLines(10); } else { headerMixin.setAutoTextSizeEnabled(false); headerMixin.getTextView().setLines(4); // hide the description descriptionMixin.getTextView().setLines(0); } } } Loading
tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.os.Vibrator; import android.util.FeatureFlagUtils; import android.view.Display; import android.view.Surface; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; Loading Loading @@ -433,6 +434,28 @@ public class FingerprintEnrollEnrollingTest { assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue(); } @Test public void fingerprintSfpsEnroll_descriptionTextVisibility() { initializeActivityFor(TYPE_POWER_BUTTON); mActivity.onEnrollmentProgressChange(1 /* steps */, 1 /* remaining */); assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.GONE); } @Test public void fingerprintUdfpsEnroll_descriptionTextVisibility() { initializeActivityFor(TYPE_UDFPS_OPTICAL); mActivity.onEnrollmentProgressChange(1 /* steps */, 1 /* remaining */); assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.VISIBLE); } private GlifLayout getLayout() { return (GlifLayout) mActivity.findViewById(R.id.setup_wizard_layout); } private void initializeActivityWithoutCreate(int sensorType) { final List<ComponentInfoInternal> componentInfo = new ArrayList<>(); final FingerprintSensorPropertiesInternal prop = Loading Loading @@ -465,6 +488,9 @@ public class FingerprintEnrollEnrollingTest { doReturn(mSfpsStageThresholds[stage]).when(mActivity).getStageThresholdSteps(stage); } doReturn(true).when(mSidecar).isEnrolling(); ReflectionHelpers.setField(mActivity, "mCanAssumeSfps", true); } else if (sensorType == TYPE_UDFPS_OPTICAL) { ReflectionHelpers.setField(mActivity, "mCanAssumeUdfps", true); } if (sensorType == TYPE_UDFPS_OPTICAL) { Loading