diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index f4c0b6a9cdf..fcf4a60b0f2 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -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; @@ -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); @@ -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; @@ -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: @@ -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: @@ -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( @@ -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()) { @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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); @@ -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); @@ -995,16 +987,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } private void showError(CharSequence error) { - if (mCanAssumeUdfps || mCanAssumeSfps) { + 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(""); - if (mCanAssumeSfps) { - if (!mHelpAnimation.isRunning()) { - mHelpAnimation.start(); - } - applySfpsErrorDynamicColors(getApplicationContext(), true); - } } else { mErrorText.setText(error); if (mErrorText.getVisibility() == View.INVISIBLE) { @@ -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); } } } diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 7be59ddb03e..62230e2808b 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -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; @@ -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 componentInfo = new ArrayList<>(); final FingerprintSensorPropertiesInternal prop = @@ -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) {