(1/N) Biometric error dialog

Add an error dialog to help user recover from biometric error for
identity check feature

Flags: android.hardware.biometrics.flag.mandatory_biometrics
Fixes: 358641110
Fixes: 358179610
Test: atest DevelopmentSettingsDashboardFragmentTest

Change-Id: I6099bc57672b945fa4fa4de98be35bd097403b22
This commit is contained in:
Diya Bera
2024-09-16 22:48:11 +00:00
parent 3f7e49dbc6
commit 5335e26b29
6 changed files with 325 additions and 0 deletions

View File

@@ -41,6 +41,8 @@ import androidx.fragment.app.FragmentActivity;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.password.ConfirmDeviceCredentialActivity;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.widget.SettingsMainSwitchBar;
@@ -233,6 +235,21 @@ public class DevelopmentSettingsDashboardFragmentTest {
assertThat(ShadowEnableDevelopmentSettingWarningDialog.mShown).isTrue();
}
@Test
@Config(shadows = ShadowBiometricErrorDialog.class)
@EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
public void onActivityResult_requestBiometricPrompt_showErrorDialog() {
when(mDashboard.getContext()).thenReturn(mContext);
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
mDashboard.onActivityResult(DevelopmentSettingsDashboardFragment.REQUEST_BIOMETRIC_PROMPT,
ConfirmDeviceCredentialActivity.BIOMETRIC_LOCKOUT_ERROR_RESULT, null);
assertThat(mSwitchBar.isChecked()).isFalse();
assertThat(ShadowBiometricErrorDialog.sShown).isTrue();
}
@Test
@Ignore
@Config(shadows = ShadowEnableDevelopmentSettingWarningDialog.class)
@@ -362,6 +379,16 @@ public class DevelopmentSettingsDashboardFragmentTest {
}
}
@Implements(BiometricErrorDialog.class)
public static class ShadowBiometricErrorDialog {
static boolean sShown;
@Implementation
public static void showBiometricErrorDialog(FragmentActivity fragmentActivity,
Utils.BiometricStatus errorCode) {
sShown = true;
}
}
@Implements(DisableDevSettingsDialogFragment.class)
public static class ShadowDisableDevSettingsDialogFragment {