Move multi-biometric logic to base fp intro activity
Ensures that the relevant multi-biometric logic--specifically, logic to ensure that fingerprint enroll is shown exactly once after face enroll--is present in both the SUW and non-SUW versions of the fingerprint enroll introduction activity. This fixes an issue where fingerprint enroll would occur multiple times when triggering the multi-biometric enroll flow outside of SUW (e.g. via an enroll intent action). Test: CTS-Verifier: Biometric Tests > 2a: Strong Biometrics + Crypto Bug: 193601823 Change-Id: I17c09e9a72ced2f23b0b279ea51a6aa209668485
This commit is contained in:
@@ -24,6 +24,7 @@ import android.hardware.fingerprint.FingerprintManager;
|
|||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -35,7 +36,9 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
||||||
import com.android.settings.biometrics.BiometricUtils;
|
import com.android.settings.biometrics.BiometricUtils;
|
||||||
|
import com.android.settings.biometrics.MultiBiometricEnrollHelper;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
import com.android.settings.password.SetupSkipDialog;
|
||||||
import com.android.settingslib.HelpUtils;
|
import com.android.settingslib.HelpUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
|
||||||
@@ -89,6 +92,32 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
footerTitle2.setText(getFooterTitle2());
|
footerTitle2.setText(getFooterTitle2());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
|
// If user has skipped or finished enrolling, don't restart enrollment.
|
||||||
|
final boolean isEnrollRequest = requestCode == BIOMETRIC_FIND_SENSOR_REQUEST
|
||||||
|
|| requestCode == ENROLL_NEXT_BIOMETRIC_REQUEST;
|
||||||
|
final boolean isResultSkipOrFinished = resultCode == RESULT_SKIP
|
||||||
|
|| resultCode == SetupSkipDialog.RESULT_SKIP || resultCode == RESULT_FINISHED;
|
||||||
|
if (isEnrollRequest && isResultSkipOrFinished) {
|
||||||
|
data = setSkipPendingEnroll(data);
|
||||||
|
}
|
||||||
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCancelButtonClick(View view) {
|
||||||
|
// User has explicitly canceled enroll. Don't restart it automatically.
|
||||||
|
Intent data = setSkipPendingEnroll(new Intent());
|
||||||
|
setResult(RESULT_SKIP, data);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSkipButtonClick(View view) {
|
||||||
|
onCancelButtonClick(view);
|
||||||
|
}
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
int getNegativeButtonTextId() {
|
int getNegativeButtonTextId() {
|
||||||
return R.string.security_settings_fingerprint_enroll_introduction_no_thanks;
|
return R.string.security_settings_fingerprint_enroll_introduction_no_thanks;
|
||||||
@@ -282,4 +311,13 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
protected int getMoreButtonTextRes() {
|
protected int getMoreButtonTextRes() {
|
||||||
return R.string.security_settings_face_enroll_introduction_more;
|
return R.string.security_settings_face_enroll_introduction_more;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
protected static Intent setSkipPendingEnroll(@Nullable Intent data) {
|
||||||
|
if (data == null) {
|
||||||
|
data = new Intent();
|
||||||
|
}
|
||||||
|
data.putExtra(MultiBiometricEnrollHelper.EXTRA_SKIP_PENDING_ENROLL, true);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,7 +29,6 @@ import com.android.internal.widget.LockPatternUtils;
|
|||||||
import com.android.settings.SetupWizardUtils;
|
import com.android.settings.SetupWizardUtils;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.biometrics.BiometricUtils;
|
import com.android.settings.biometrics.BiometricUtils;
|
||||||
import com.android.settings.biometrics.MultiBiometricEnrollHelper;
|
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settings.password.SetupChooseLockGeneric;
|
import com.android.settings.password.SetupChooseLockGeneric;
|
||||||
import com.android.settings.password.SetupSkipDialog;
|
import com.android.settings.password.SetupSkipDialog;
|
||||||
@@ -85,16 +84,6 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
|
|||||||
data = setFingerprintCount(data);
|
data = setFingerprintCount(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If user has skipped or finished enrolling, don't restart enrollment.
|
|
||||||
final boolean isEnrollRequest = requestCode == BIOMETRIC_FIND_SENSOR_REQUEST
|
|
||||||
|| requestCode == ENROLL_NEXT_BIOMETRIC_REQUEST;
|
|
||||||
final boolean isResultSkipOrFinished = resultCode == RESULT_SKIP
|
|
||||||
|| resultCode == SetupSkipDialog.RESULT_SKIP || resultCode == RESULT_FINISHED;
|
|
||||||
if (isEnrollRequest && isResultSkipOrFinished) {
|
|
||||||
data = setSkipPendingEnroll(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,14 +111,6 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent setSkipPendingEnroll(Intent data) {
|
|
||||||
if (data == null) {
|
|
||||||
data = new Intent();
|
|
||||||
}
|
|
||||||
data.putExtra(MultiBiometricEnrollHelper.EXTRA_SKIP_PENDING_ENROLL, true);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCancelButtonClick(View view) {
|
protected void onCancelButtonClick(View view) {
|
||||||
final int resultCode;
|
final int resultCode;
|
||||||
@@ -151,11 +132,6 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
|
|||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onSkipButtonClick(View view) {
|
|
||||||
onCancelButtonClick(view);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Propagate lock screen metrics if the user goes back from the fingerprint setup screen
|
* Propagate lock screen metrics if the user goes back from the fingerprint setup screen
|
||||||
* after having added lock screen to his device.
|
* after having added lock screen to his device.
|
||||||
|
Reference in New Issue
Block a user