Merge "Do not reset incorrect password attempts after biometric authentication" into rvc-dev am: b79e01680d

Change-Id: I6dda830e2e54011d505a70bdb8a10593dc8adbdd
This commit is contained in:
Rubin Xu
2020-03-18 19:02:24 +00:00
committed by Automerger Merge Worker
5 changed files with 28 additions and 6 deletions

View File

@@ -70,6 +70,13 @@ public class BiometricFragment extends InstrumentedFragment {
}); });
cleanup(); cleanup();
} }
@Override
public void onAuthenticationFailed() {
mClientExecutor.execute(() -> {
mClientCallback.onAuthenticationFailed();
});
}
}; };
private final DialogInterface.OnClickListener mNegativeButtonListener = private final DialogInterface.OnClickListener mNegativeButtonListener =

View File

@@ -111,6 +111,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
}); });
private AuthenticationCallback mAuthenticationCallback = new AuthenticationCallback() { private AuthenticationCallback mAuthenticationCallback = new AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) { public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
if (!mGoingToBackground) { if (!mGoingToBackground) {
if (errorCode == BiometricPrompt.BIOMETRIC_ERROR_USER_CANCELED if (errorCode == BiometricPrompt.BIOMETRIC_ERROR_USER_CANCELED
@@ -123,17 +124,24 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
} }
} }
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
mTrustManager.setDeviceLockedForUser(mUserId, false); mTrustManager.setDeviceLockedForUser(mUserId, false);
final boolean isStrongAuth = result.getAuthenticationType()
== BiometricPrompt.AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL;
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, mUserManager, ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, mUserManager,
mUserId); mDevicePolicyManager, mUserId, isStrongAuth);
ConfirmDeviceCredentialUtils.checkForPendingIntent( ConfirmDeviceCredentialUtils.checkForPendingIntent(
ConfirmDeviceCredentialActivity.this); ConfirmDeviceCredentialActivity.this);
setResult(Activity.RESULT_OK); setResult(Activity.RESULT_OK);
finish(); finish();
} }
@Override
public void onAuthenticationFailed() {
mDevicePolicyManager.reportFailedBiometricAttempt(mUserId);
}
}; };
private String getStringForError(int errorCode) { private String getStringForError(int errorCode) {

View File

@@ -20,6 +20,7 @@ import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.ActivityOptions; import android.app.ActivityOptions;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.Intent; import android.content.Intent;
import android.content.IntentSender; import android.content.IntentSender;
import android.os.RemoteException; import android.os.RemoteException;
@@ -54,8 +55,12 @@ public class ConfirmDeviceCredentialUtils {
} }
public static void reportSuccessfulAttempt(LockPatternUtils utils, UserManager userManager, public static void reportSuccessfulAttempt(LockPatternUtils utils, UserManager userManager,
int userId) { DevicePolicyManager dpm, int userId, boolean isStrongAuth) {
if (isStrongAuth) {
utils.reportSuccessfulPasswordAttempt(userId); utils.reportSuccessfulPasswordAttempt(userId);
} else {
dpm.reportSuccessfulBiometricAttempt(userId);
}
if (userManager.isManagedProfile(userId)) { if (userManager.isManagedProfile(userId)) {
// Keyguard is responsible to disable StrongAuth for primary user. Disable StrongAuth // Keyguard is responsible to disable StrongAuth for primary user. Disable StrongAuth
// for work challenge only here. // for work challenge only here.

View File

@@ -475,7 +475,8 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
if (matched) { if (matched) {
if (newResult) { if (newResult) {
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils,
mUserManager, mEffectiveUserId); mUserManager, mDevicePolicyManager, mEffectiveUserId,
/* isStrongAuth */ true);
} }
startDisappearAnimation(intent); startDisappearAnimation(intent);
ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity()); ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity());

View File

@@ -509,7 +509,8 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
if (matched) { if (matched) {
if (newResult) { if (newResult) {
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils,
mUserManager, mEffectiveUserId); mUserManager, mDevicePolicyManager, mEffectiveUserId,
/* isStrongAuth */ true);
} }
startDisappearAnimation(intent); startDisappearAnimation(intent);
ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity()); ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity());