From 560a0fa9e888bd2d852d85da9fb354b3a1ae641d Mon Sep 17 00:00:00 2001 From: Wu Ahan Date: Fri, 19 Jul 2024 08:53:57 +0000 Subject: [PATCH] Make vendor can override the condition of adjusting properties of header text Move the condition inside FingerprintEnrollEnrolling#maybeHideSfpsText can be overriden by vendor implementation. Flag: EXEMPT bugfix Bug: 344839309 Test: Manually Change-Id: Ie497ac973575825667f6bb4d871149488dcdaed7 --- .../FingerprintEnrollEnrolling.java | 53 +++++++------------ .../feature/SfpsEnrollmentFeature.java | 10 ++++ .../feature/SfpsEnrollmentFeatureImpl.java | 6 +++ 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index 795f999a030..b32ab4f7350 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -74,6 +74,7 @@ import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.display.DisplayDensityUtils; +import com.android.systemui.unfold.compat.ScreenSizeFoldProvider; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieComposition; @@ -89,7 +90,6 @@ import com.google.android.setupdesign.template.HeaderMixin; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; -import java.util.function.Function; /** * Activity which handles the actual enrolling for fingerprint. @@ -197,8 +197,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { private OrientationEventListener mOrientationEventListener; private int mPreviousRotation = 0; - @NonNull - private SfpsEnrollmentFeature mSfpsEnrollmentFeature = new EmptySfpsEnrollmentFeature(); + private boolean mIsFolded = false; + + private SfpsEnrollmentFeature mSfpsEnrollmentFeature; + @Nullable private UdfpsEnrollCalibrator mCalibrator; @@ -386,6 +388,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { @Override protected void onStart() { super.onStart(); + setupScreenFoldCallbackWhenNecessary(); updateProgress(false /* animate */); updateTitleAndDescription(true); if (mRestoring) { @@ -393,6 +396,19 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } + private void setupScreenFoldCallbackWhenNecessary() { + if (mCanAssumeSfps) { + // These two fields will be cleaned up in BiometricEnrollBase#onStop. + mScreenSizeFoldProvider = new ScreenSizeFoldProvider(getApplicationContext()); + mFoldCallback = isFolded -> { + mIsFolded = isFolded; + maybeHideSfpsText(getResources().getConfiguration()); + }; + // The callback will be unregistered in BiometricEnrollBase#onStop. + mScreenSizeFoldProvider.registerCallback(mFoldCallback, getMainExecutor()); + } + } + @Override public void onEnterAnimationComplete() { super.onEnterAnimationComplete(); @@ -1156,13 +1172,12 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { private void maybeHideSfpsText(@NonNull Configuration newConfig) { final HeaderMixin headerMixin = getLayout().getMixin(HeaderMixin.class); final DescriptionMixin descriptionMixin = getLayout().getMixin(DescriptionMixin.class); - 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) { + if (mSfpsEnrollmentFeature.shouldAdjustHeaderText(newConfig, mIsFolded)) { headerMixin.setAutoTextSizeEnabled(true); headerMixin.getTextView().setMinLines(0); headerMixin.getTextView().setMaxLines(10); @@ -1209,32 +1224,4 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } - private static class EmptySfpsEnrollmentFeature implements SfpsEnrollmentFeature { - private final String exceptionStr = "Assume sfps but no SfpsEnrollmentFeature impl."; - - @Override - public int getCurrentSfpsEnrollStage(int progressSteps, Function mapper) { - throw new IllegalStateException(exceptionStr); - } - - @Override - public int getFeaturedStageHeaderResource(int stage) { - throw new IllegalStateException(exceptionStr); - } - - @Override - public int getSfpsEnrollLottiePerStage(int stage) { - throw new IllegalStateException(exceptionStr); - } - - @Override - public float getEnrollStageThreshold(@NonNull Context context, int index) { - throw new IllegalStateException(exceptionStr); - } - - @Override - public Animator getHelpAnimator(@NonNull View target) { - throw new IllegalStateException(exceptionStr); - } - } } diff --git a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeature.java b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeature.java index bdf9530828b..2d31b0cf3b9 100644 --- a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeature.java +++ b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeature.java @@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint.feature; import android.animation.Animator; import android.content.Context; +import android.content.res.Configuration; import android.view.View; import androidx.annotation.NonNull; @@ -114,4 +115,13 @@ public interface SfpsEnrollmentFeature { * @param remaining remaining */ default void handleOnEnrollmentProgressChange(int steps, int remaining) {} + + /** + * Indicates if the properties of header text view like auto text size or min / max lines + * should be adjusted. + * @param conf the current configuration + * @param isFolded is the device folded + * @return true if should adjust auto size and max lines of header; otherwise false + */ + boolean shouldAdjustHeaderText(@NonNull Configuration conf, boolean isFolded); } diff --git a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java index 60ced6e95f1..bf97478feef 100644 --- a/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java +++ b/src/com/android/settings/biometrics/fingerprint/feature/SfpsEnrollmentFeatureImpl.java @@ -26,6 +26,7 @@ import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrol import android.animation.Animator; import android.animation.ObjectAnimator; import android.content.Context; +import android.content.res.Configuration; import android.hardware.fingerprint.FingerprintManager; import android.view.View; import android.view.animation.AccelerateInterpolator; @@ -107,4 +108,9 @@ public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature { help.setAutoCancel(false); return help; } + + @Override + public boolean shouldAdjustHeaderText(@NonNull Configuration conf, boolean isFolded) { + return conf.orientation == Configuration.ORIENTATION_LANDSCAPE; + } }