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

Commit d7f53d41 authored by lbill's avatar lbill Committed by Bill Lin
Browse files

Save isCanceled state and restore when rotation

- Create mIsCanceled field in FingerprintEnrollEnrolling
- Override onSaveInstanceState and save mIsCanceled state
- onCreate restore mIsCanceled
- shouldStartAutomatically() return mRestoring && !mIsCanceled
- Integrate FingerprintErrorDialog with "try again"-> Clear mIsCanceled

Bug: 237103873
Test: manual enroll UDFPS, and wait for timeout, seeing timeout error
dialog showing above fingerprint enrollment pad.

Change-Id: I3a3010ca12aa0b23fd122a8afc9b82adf5656fb8
parent 51d087cd
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {

    private static final String TAG = "FingerprintEnrollEnrolling";
    static final String TAG_SIDECAR = "sidecar";
    static final String KEY_STATE_CANCELED = "is_canceled";

    private static final int PROGRESS_BAR_MAX = 10000;

@@ -129,6 +130,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    private boolean mRestoring;
    private Vibrator mVibrator;
    private boolean mIsSetupWizard;
    private boolean mIsCanceled;
    private AccessibilityManager mAccessibilityManager;
    private boolean mIsAccessibilityEnabled;
    private LottieAnimationView mIllustrationLottie;
@@ -153,6 +155,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState != null) {
            restoreSavedState(savedInstanceState);
        }
        mFingerprintManager = getSystemService(FingerprintManager.class);
        final List<FingerprintSensorPropertiesInternal> props =
                mFingerprintManager.getSensorPropertiesInternal();
@@ -238,7 +243,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                return true;
            });
        }
        mRestoring = savedInstanceState != null;
    }

    @Override
@@ -253,11 +257,22 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        if (mCanAssumeUdfps) {
            // Continue enrollment if restoring (e.g. configuration changed). Otherwise, wait
            // for the entry animation to complete before starting.
            return mRestoring;
            return mRestoring && !mIsCanceled;
        }
        return true;
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled);
    }

    private void restoreSavedState(Bundle savedInstanceState) {
        mRestoring = true;
        mIsCanceled = savedInstanceState.getBoolean(KEY_STATE_CANCELED, false);
    }

    @Override
    protected void onStart() {
        super.onStart();
@@ -498,7 +513,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    @Override
    public void onEnrollmentError(int errMsgId, CharSequence errString) {
        FingerprintErrorDialog.showErrorDialog(this, errMsgId);
        mIsCanceled = true;
        cancelEnrollment();
        stopIconAnimation();
        stopListenOrientationEvent();
        if (!mCanAssumeUdfps) {
            mErrorText.removeCallbacks(mTouchAgainRunnable);
        }
+7 −1
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@ package com.android.settings.biometrics.fingerprint;

import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.KEY_STATE_CANCELED;

import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
@@ -68,7 +70,11 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                    getActivity().recreate();
                                    Activity activity = getActivity();
                                    Intent intent = activity.getIntent();
                                    intent.putExtra(KEY_STATE_CANCELED, false);
                                    activity.startActivity(intent);
                                    activity.finish();
                                }
                            })
                    .setNegativeButton(