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

Commit 0ffbd689 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Attach FingerprintEnrollEnrollingRfps fragment"

parents 5ea5e85d 81530e3f
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -123,7 +123,10 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
        dialog.show(fragmentManager, FingerprintErrorDialog.class.getName());
    }

    private static int getErrorMessage(int errMsgId) {
    /**
     * Gets dialog message as error id inside {@link FingerprintManager}
     */
    public static int getErrorMessage(int errMsgId) {
        switch (errMsgId) {
            case FingerprintManager.FINGERPRINT_ERROR_TIMEOUT:
                // This message happens when the underlying crypto layer decides to revoke
@@ -137,7 +140,10 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
        }
    }

    private static int getErrorTitle(int errMsgId) {
    /**
     * Gets dialog title as error id inside {@link FingerprintManager}
     */
    public static int getErrorTitle(int errMsgId) {
        switch (errMsgId) {
            case FingerprintManager.FINGERPRINT_ERROR_UNABLE_TO_PROCESS:
                return R.string
+4 −1
Original line number Diff line number Diff line
@@ -98,8 +98,11 @@ public class FingerprintRepository {
        return resources.getInteger(R.integer.suw_max_fingerprints_enrollable);
    }

    /**
     * Gets the first FingerprintSensorPropertiesInternal from FingerprintManager
     */
    @Nullable
    private FingerprintSensorPropertiesInternal getFirstFingerprintSensorPropertiesInternal() {
    public FingerprintSensorPropertiesInternal getFirstFingerprintSensorPropertiesInternal() {
        final List<FingerprintSensorPropertiesInternal> props = mSensorPropertiesCache;
        if (props == null) {
            // Handle this case if it really happens
+2 −1
Original line number Diff line number Diff line
@@ -113,13 +113,14 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
                        new FingerprintUpdater(application), userId);
            }
        } else if (modelClass.isAssignableFrom(FingerprintEnrollEnrollingViewModel.class)) {
            final Integer userId = extras.get(USER_ID_KEY);
            final FingerprintRepository fingerprint = provider.getFingerprintRepository(
                    application);
            final AccessibilityRepository accessibility = provider.getAccessibilityRepository(
                    application);
            final VibratorRepository vibrator = provider.getVibratorRepository(application);
            if (fingerprint != null && accessibility != null && vibrator != null) {
                return (T) new FingerprintEnrollEnrollingViewModel(application, fingerprint,
                return (T) new FingerprintEnrollEnrollingViewModel(application, userId, fingerprint,
                        accessibility, vibrator);
            }
        }
+95 −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.biometrics2.ui.view;

import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.ErrorDialogData;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_RESTART;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT;

import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.hardware.biometrics.BiometricConstants;
import android.os.Bundle;

import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider;

import com.android.settings.R;
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;

/**
 * Fingerprint error dialog, will be shown when an error occurs during fingerprint enrollment.
 */
public class FingerprintEnrollEnrollingErrorDialog extends InstrumentedDialogFragment {

    private FingerprintEnrollEnrollingViewModel mViewModel;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final ErrorDialogData data = mViewModel.getErrorDialogLiveData().getValue();
        final int errMsgId = data.getErrMsgId();
        final boolean canAssumeUdfps = mViewModel.canAssumeUdfps();
        final boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;

        builder.setTitle(data.getErrTitle())
                .setMessage(data.getErrMsg())
                .setCancelable(false);
        if (wasTimeout && canAssumeUdfps) {
            builder.setPositiveButton(
                    R.string.security_settings_fingerprint_enroll_dialog_try_again,
                    (dialog, which) -> {
                            dialog.dismiss();
                            mViewModel.onErrorDialogAction(FINGERPRINT_ERROR_DIALOG_ACTION_RESTART);
                    });
            builder.setNegativeButton(
                    R.string.security_settings_fingerprint_enroll_dialog_ok,
                    (dialog, which) -> {
                            dialog.dismiss();
                            mViewModel.onErrorDialogAction(
                                    FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT);
                    });
        } else {
            builder.setPositiveButton(
                    R.string.security_settings_fingerprint_enroll_dialog_ok,
                    (dialog, which) -> {
                        dialog.dismiss();
                        mViewModel.onErrorDialogAction(wasTimeout
                                ? FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT
                                : FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH);
                    });
        }
        final AlertDialog dialog = builder.create();
        dialog.setCanceledOnTouchOutside(false);
        return dialog;
    }

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

    @Override
    public void onAttach(Context context) {
        mViewModel = new ViewModelProvider(getActivity()).get(
                FingerprintEnrollEnrollingViewModel.class);
        super.onAttach(context);
    }
}
+363 −84

File changed.

Preview size limit exceeded, changes collapsed.

Loading