Merge "Do not reset incorrect password attempts after biometric authentication" into rvc-dev am: b79e01680d
am: 8d4aca50c6
am: 732276494e
Change-Id: I2975bc0e1fd1c33a30ef9532facd1d3eacc0bd5a
This commit is contained in:
@@ -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 =
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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.
|
||||||
|
@@ -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());
|
||||||
|
@@ -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());
|
||||||
|
Reference in New Issue
Block a user