Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 560a0fa9 authored by Wu Ahan's avatar Wu Ahan
Browse files

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
parent ed3594fe
Loading
Loading
Loading
Loading
+20 −33
Original line number Diff line number Diff line
@@ -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<Integer, Integer> 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);
        }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -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);
}
+6 −0
Original line number Diff line number Diff line
@@ -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;
    }
}