Merge "[BiometricsV2] Remove "Try again" button from errorDialog"

This commit is contained in:
TreeHugger Robot
2023-05-09 02:12:28 +00:00
committed by Android (Google) Code Review
4 changed files with 66 additions and 115 deletions

View File

@@ -1,95 +0,0 @@
/*
* 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);
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright 2023 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 android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.hardware.biometrics.BiometricConstants
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModelProvider
import com.android.settings.R
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT
/**
* Fingerprint error dialog, will be shown when an error occurs during fingerprint enrollment.
*/
class FingerprintEnrollEnrollingErrorDialog : DialogFragment() {
private var mViewModel: FingerprintEnrollEnrollingViewModel? = null
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val value = mViewModel!!.errorDialogLiveData.value!!
return AlertDialog.Builder(requireActivity())
.setTitle(value.errTitle)
.setMessage(value.errMsg)
.setCancelable(false)
.setPositiveButton(
R.string.security_settings_fingerprint_enroll_dialog_ok
) { dialog: DialogInterface, _: Int ->
dialog.dismiss()
mViewModel?.onErrorDialogAction(
if (value.errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT)
FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT
else
FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH)
}
.create()
.apply { setCanceledOnTouchOutside(false) }
}
override fun onAttach(context: Context) {
mViewModel = ViewModelProvider(requireActivity())[
FingerprintEnrollEnrollingViewModel::class.java]
super.onAttach(context)
}
}

View File

@@ -89,15 +89,9 @@ public class FingerprintEnrollEnrollingViewModel extends AndroidViewModel {
*/ */
public static final int FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT = 1; public static final int FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT = 1;
/**
* Icon touch dialog show
*/
public static final int FINGERPRINT_ERROR_DIALOG_ACTION_RESTART = 2;
@IntDef(prefix = { "FINGERPRINT_ERROR_DIALOG_ACTION_" }, value = { @IntDef(prefix = { "FINGERPRINT_ERROR_DIALOG_ACTION_" }, value = {
FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH, FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH,
FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT, FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT
FINGERPRINT_ERROR_DIALOG_ACTION_RESTART
}) })
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface FingerprintErrorDialogAction {} public @interface FingerprintErrorDialogAction {}
@@ -294,13 +288,6 @@ public class FingerprintEnrollEnrollingViewModel extends AndroidViewModel {
return mFingerprintRepository.getFirstFingerprintSensorPropertiesInternal(); return mFingerprintRepository.getFirstFingerprintSensorPropertiesInternal();
} }
/**
* The first sensor type is UDFPS sensor or not
*/
public boolean canAssumeUdfps() {
return mFingerprintRepository.canAssumeUdfps();
}
/** /**
* Data for passing to FingerprintEnrollEnrollingErrorDialog * Data for passing to FingerprintEnrollEnrollingErrorDialog
*/ */

View File

@@ -22,7 +22,6 @@ import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnr
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_ACTION_SHOW_ICON_TOUCH_DIALOG; import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_ACTION_SHOW_ICON_TOUCH_DIALOG;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_CANCELED_BECAUSE_BACK_PRESSED; import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_CANCELED_BECAUSE_BACK_PRESSED;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_CANCELED_BECAUSE_USER_SKIP; import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ENROLL_ENROLLING_CANCELED_BECAUSE_USER_SKIP;
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_FINISH;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT; import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT;
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FingerprintErrorDialogAction; import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollEnrollingViewModel.FingerprintErrorDialogAction;
@@ -106,11 +105,8 @@ public class FingerprintEnrollEnrollingViewModelTest {
public void testErrorDialogActionLiveData() { public void testErrorDialogActionLiveData() {
assertThat(mViewModel.getErrorDialogActionLiveData().getValue()).isEqualTo(null); assertThat(mViewModel.getErrorDialogActionLiveData().getValue()).isEqualTo(null);
@FingerprintErrorDialogAction int action = FINGERPRINT_ERROR_DIALOG_ACTION_RESTART; @FingerprintErrorDialogAction int action =
mViewModel.onErrorDialogAction(action); FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT;
assertThat(mViewModel.getErrorDialogActionLiveData().getValue()).isEqualTo(action);
action = FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT;
mViewModel.onErrorDialogAction(action); mViewModel.onErrorDialogAction(action);
assertThat(mViewModel.getErrorDialogActionLiveData().getValue()).isEqualTo(action); assertThat(mViewModel.getErrorDialogActionLiveData().getValue()).isEqualTo(action);