(2/N) Biometric error dialog
Add an error dialog to help user recover from biometric error for for identity check while trying to factory reset Flag: android.hardware.biometrics.flag.mandatory_biometrics Bug: 358641110 Bug: 358179610 Test: atest MainClearTest Change-Id: Ia20389a3146aa45ad42bdc4d31f1bd9488f2dc42
This commit is contained in:
@@ -55,7 +55,11 @@ import android.widget.LinearLayout;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.android.settings.biometrics.IdentityCheckBiometricErrorDialog;
|
||||
import com.android.settings.password.ConfirmDeviceCredentialActivity;
|
||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||
@@ -114,6 +118,10 @@ public class MainClearTest {
|
||||
|
||||
@Mock
|
||||
private Intent mMockIntent;
|
||||
@Mock
|
||||
private FragmentManager mMockFragmentManager;
|
||||
@Mock
|
||||
private FragmentTransaction mMockFragmentTransaction;
|
||||
|
||||
private MainClear mMainClear;
|
||||
private ShadowActivity mShadowActivity;
|
||||
@@ -391,6 +399,9 @@ public class MainClearTest {
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
|
||||
public void testOnActivityResultInternal_keyguardRequestNotTriggeringBiometricPrompt_lockoutError() {
|
||||
final ArgumentCaptor<IdentityCheckBiometricErrorDialog> argumentCaptor =
|
||||
ArgumentCaptor.forClass(IdentityCheckBiometricErrorDialog.class);
|
||||
|
||||
when(mContext.getResources()).thenReturn(mResources);
|
||||
when(mMockActivity.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
|
||||
when(mResources.getString(anyInt())).thenReturn(TEST_ACCOUNT_NAME);
|
||||
@@ -400,12 +411,17 @@ public class MainClearTest {
|
||||
doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
|
||||
doNothing().when(mMainClear).startActivityForResult(any(), anyInt());
|
||||
doReturn(mMockActivity).when(mMainClear).getActivity();
|
||||
doReturn(mMockFragmentManager).when(mMockActivity).getSupportFragmentManager();
|
||||
doReturn(mMockFragmentTransaction).when(mMockFragmentManager).beginTransaction();
|
||||
doReturn(mContext).when(mMainClear).getContext();
|
||||
|
||||
mMainClear
|
||||
.onActivityResultInternal(MainClear.KEYGUARD_REQUEST, Activity.RESULT_OK, null);
|
||||
|
||||
verify(mMainClear).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
|
||||
verify(mMainClear.getActivity().getSupportFragmentManager().beginTransaction()).add(
|
||||
argumentCaptor.capture(), any());
|
||||
assertThat(argumentCaptor.getValue()).isInstanceOf(IdentityCheckBiometricErrorDialog.class);
|
||||
verify(mMainClear, never()).startActivityForResult(any(), eq(MainClear.BIOMETRICS_REQUEST));
|
||||
verify(mMainClear, never()).establishInitialState();
|
||||
verify(mMainClear, never()).getAccountConfirmationIntent();
|
||||
@@ -427,6 +443,29 @@ public class MainClearTest {
|
||||
verify(mMainClear).showFinalConfirmation();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnActivityResultInternal_biometricRequestTriggeringBiometricErrorDialog() {
|
||||
final ArgumentCaptor<IdentityCheckBiometricErrorDialog> argumentCaptor =
|
||||
ArgumentCaptor.forClass(IdentityCheckBiometricErrorDialog.class);
|
||||
|
||||
doReturn(true).when(mMainClear).isValidRequestCode(
|
||||
eq(MainClear.BIOMETRICS_REQUEST));
|
||||
doNothing().when(mMainClear).establishInitialState();
|
||||
doReturn(mMockActivity).when(mMainClear).getActivity();
|
||||
doReturn(mMockFragmentManager).when(mMockActivity).getSupportFragmentManager();
|
||||
doReturn(mMockFragmentTransaction).when(mMockFragmentManager).beginTransaction();
|
||||
doReturn(mContext).when(mMainClear).getContext();
|
||||
|
||||
mMainClear
|
||||
.onActivityResultInternal(MainClear.BIOMETRICS_REQUEST,
|
||||
ConfirmDeviceCredentialActivity.BIOMETRIC_LOCKOUT_ERROR_RESULT, null);
|
||||
|
||||
verify(mMainClear).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
|
||||
verify(mMainClear.getActivity().getSupportFragmentManager().beginTransaction()).add(
|
||||
argumentCaptor.capture(), any());
|
||||
verify(mMainClear).establishInitialState();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnActivityResultInternal_biometricRequestTriggeringInitialState() {
|
||||
doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
|
||||
|
Reference in New Issue
Block a user