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

Commit 35258435 authored by Mill Chen's avatar Mill Chen Committed by Android (Google) Code Review
Browse files

Merge "Add an error dialog in FingerprintEnrollFindSensor" into sc-dev

parents 91b4a581 4606a292
Loading
Loading
Loading
Loading
+1 −45
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import androidx.appcompat.app.AlertDialog;

import com.android.settings.R;
import com.android.settings.biometrics.BiometricEnrollSidecar;
import com.android.settings.biometrics.BiometricErrorDialog;
import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -111,32 +110,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    private boolean mRestoring;
    private Vibrator mVibrator;

    public static class FingerprintErrorDialog extends BiometricErrorDialog {
        static FingerprintErrorDialog newInstance(CharSequence msg, int msgId) {
            FingerprintErrorDialog dialog = new FingerprintErrorDialog();
            Bundle args = new Bundle();
            args.putCharSequence(KEY_ERROR_MSG, msg);
            args.putInt(KEY_ERROR_ID, msgId);
            dialog.setArguments(args);
            return dialog;
        }

        @Override
        public int getMetricsCategory() {
            return SettingsEnums.DIALOG_FINGERPINT_ERROR;
        }

        @Override
        public int getTitleResId() {
            return R.string.security_settings_fingerprint_enroll_error_dialog_title;
        }

        @Override
        public int getOkButtonTextResId() {
            return R.string.security_settings_fingerprint_enroll_dialog_ok;
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -339,19 +312,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {

    @Override
    public void onEnrollmentError(int errMsgId, CharSequence errString) {
        int msgId;
        switch (errMsgId) {
            case FingerprintManager.FINGERPRINT_ERROR_TIMEOUT:
                // This message happens when the underlying crypto layer decides to revoke the
                // enrollment auth token.
                msgId = R.string.security_settings_fingerprint_enroll_error_timeout_dialog_message;
                break;
            default:
                // There's nothing specific to tell the user about. Ask them to try again.
                msgId = R.string.security_settings_fingerprint_enroll_error_generic_dialog_message;
                break;
        }
        showErrorDialog(getText(msgId), errMsgId);
        FingerprintErrorDialog.showErrorDialog(this, errMsgId);
        stopIconAnimation();
        if (!mCanAssumeUdfps) {
            mErrorText.removeCallbacks(mTouchAgainRunnable);
@@ -398,11 +359,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        return PROGRESS_BAR_MAX * progress / (steps + 1);
    }

    private void showErrorDialog(CharSequence msg, int msgId) {
        BiometricErrorDialog dlg = FingerprintErrorDialog.newInstance(msg, msgId);
        dlg.show(getSupportFragmentManager(), FingerprintErrorDialog.class.getName());
    }

    private void showIconTouchDialog() {
        mIconTouchCount = 0;
        new IconTouchDialog().show(getSupportFragmentManager(), null /* tag */);
+22 −19
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.BiometricEnrollSidecar.Listener;
import com.android.settings.biometrics.BiometricEnrollSidecar;
import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.password.ChooseLockSettingsHelper;

@@ -40,7 +40,8 @@ import java.util.List;
/**
 * Activity explaining the fingerprint sensor location for fingerprint enrollment.
 */
public class FingerprintEnrollFindSensor extends BiometricEnrollBase {
public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
        BiometricEnrollSidecar.Listener {

    @Nullable
    private FingerprintFindSensorAnimation mAnimation;
@@ -139,7 +140,9 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase {
                    .add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR)
                    .commitAllowingStateLoss();
        }
        mSidecar.setListener(new Listener() {
        mSidecar.setListener(this);
    }

    @Override
    public void onEnrollmentProgressChange(int steps, int remaining) {
        mNextClicked = true;
@@ -155,10 +158,10 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase {
        if (mNextClicked && errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
            mNextClicked = false;
            proceedToEnrolling(false /* cancelEnrollment */);
        } else {
            FingerprintErrorDialog.showErrorDialog(this, errMsgId);
        }
    }
        });
    }

    @Override
    protected void onStop() {
+72 −0
Original line number Diff line number Diff line
/*
 * Copyright 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics.fingerprint;

import android.app.settings.SettingsEnums;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;

import com.android.settings.R;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.BiometricErrorDialog;

/**
 * Fingerprint error dialog, will be shown when an error occurs during fingerprint enrollment.
 */
public class FingerprintErrorDialog extends BiometricErrorDialog {
    public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) {
        final CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
        final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId);
        dialog.show(host.getSupportFragmentManager(), FingerprintErrorDialog.class.getName());
    }

    private static int getErrorMessage(int errMsgId) {
        switch (errMsgId) {
            case FingerprintManager.FINGERPRINT_ERROR_TIMEOUT:
                // This message happens when the underlying crypto layer decides to revoke the
                // enrollment auth token.
                return R.string.security_settings_fingerprint_enroll_error_timeout_dialog_message;
            default:
                // There's nothing specific to tell the user about. Ask them to try again.
                return R.string.security_settings_fingerprint_enroll_error_generic_dialog_message;
        }
    }

    private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId) {
        FingerprintErrorDialog dialog = new FingerprintErrorDialog();
        Bundle args = new Bundle();
        args.putCharSequence(KEY_ERROR_MSG, msg);
        args.putInt(KEY_ERROR_ID, msgId);
        dialog.setArguments(args);
        return dialog;
    }

    @Override
    public int getTitleResId() {
        return R.string.security_settings_fingerprint_enroll_error_dialog_title;
    }

    @Override
    public int getOkButtonTextResId() {
        return R.string.security_settings_fingerprint_enroll_dialog_ok;
    }

    @Override
    public int getMetricsCategory() {
        return SettingsEnums.DIALOG_FINGERPINT_ERROR;
    }
}