Fix udfps fingerprint setting flow
1. on udfps + faceunlock devices, fingerprint settings shall not be
launched if no fingerprint enrolled.
2. on udfps device, after first fingerprint enrollment successfully,
fingerprint settings shall be shown.
3. Update FingerprintEnrollFindSensorTest to support udfps cases.
Bug: 243701933
Bug: 243003012
Test: manully adding first fingerprint on udfps + faceunlock device
Test: manully suw on udfps + faceunlock device
Test: run robotest for FingerprintEnrollFindSensorTest
and SetupFingerprintEnrollFindSensorTest
Merged-In: I62d945f2c2e980edf2a885234e54acae109e7672
Change-Id: I62d945f2c2e980edf2a885234e54acae109e7672
(cherry picked from commit 936dd31312
)
This commit is contained in:
@@ -67,7 +67,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
final FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
|
||||
final FingerprintManager fingerprintManager = Utils.getFingerprintManagerOrNull(this);
|
||||
final List<FingerprintSensorPropertiesInternal> props =
|
||||
fingerprintManager.getSensorPropertiesInternal();
|
||||
mCanAssumeUdfps = props != null && props.size() == 1 && props.get(0).isAnyUdfpsType();
|
||||
@@ -138,8 +138,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
||||
// This is an entry point for SetNewPasswordController, e.g.
|
||||
// adb shell am start -a android.app.action.SET_NEW_PASSWORD
|
||||
if (mToken == null && BiometricUtils.containsGatekeeperPasswordHandle(getIntent())) {
|
||||
final FingerprintManager fpm = getSystemService(FingerprintManager.class);
|
||||
fpm.generateChallenge(mUserId, (sensorId, userId, challenge) -> {
|
||||
fingerprintManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> {
|
||||
mChallenge = challenge;
|
||||
mSensorId = sensorId;
|
||||
mToken = BiometricUtils.requestGatekeeperHat(this, getIntent(), mUserId, challenge);
|
||||
@@ -278,6 +277,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
||||
}
|
||||
|
||||
private void onStartButtonClick(View view) {
|
||||
mNextClicked = true;
|
||||
startActivityForResult(getFingerprintEnrollingIntent(), ENROLL_REQUEST);
|
||||
}
|
||||
|
||||
|
@@ -364,10 +364,16 @@ public class FingerprintSettings extends SubSettings {
|
||||
mHasFirstEnrolled);
|
||||
}
|
||||
|
||||
// Need to authenticate a session token if none
|
||||
if (mToken == null && mLaunchedConfirm == false) {
|
||||
mLaunchedConfirm = true;
|
||||
launchChooseOrConfirmLock();
|
||||
// (mLaunchedConfirm or mIsEnrolling) means that we are waiting an activity result.
|
||||
if (!mLaunchedConfirm && !mIsEnrolling) {
|
||||
// Need to authenticate a session token if none
|
||||
if (mToken == null) {
|
||||
mLaunchedConfirm = true;
|
||||
launchChooseOrConfirmLock();
|
||||
} else if (!mHasFirstEnrolled) {
|
||||
mIsEnrolling = true;
|
||||
addFirstFingerprint();
|
||||
}
|
||||
}
|
||||
updateFooterColumns(activity);
|
||||
}
|
||||
@@ -674,8 +680,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
updateAddPreference();
|
||||
if (!mHasFirstEnrolled && !mIsEnrolling) {
|
||||
mIsEnrolling = true;
|
||||
addFirstFingerprint(
|
||||
BiometricUtils.getGatekeeperPasswordHandle(data));
|
||||
addFirstFingerprint();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -695,7 +700,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
}
|
||||
} else if (requestCode == AUTO_ADD_FIRST_FINGERPRINT_REQUEST) {
|
||||
mIsEnrolling = false;
|
||||
mHasFirstEnrolled = false;
|
||||
mHasFirstEnrolled = true;
|
||||
if (resultCode != RESULT_FINISHED) {
|
||||
Log.d(TAG, "Add first fingerprint fail, result:" + resultCode);
|
||||
finish();
|
||||
@@ -771,7 +776,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
}
|
||||
}
|
||||
|
||||
private void addFirstFingerprint(@Nullable Long gkPwHandle) {
|
||||
private void addFirstFingerprint() {
|
||||
Intent intent = new Intent();
|
||||
intent.setClassName(SETTINGS_PACKAGE_NAME,
|
||||
FingerprintEnrollIntroductionInternal.class.getName());
|
||||
@@ -782,9 +787,6 @@ public class FingerprintSettings extends SubSettings {
|
||||
|
||||
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
|
||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
|
||||
if (gkPwHandle != null) {
|
||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE, (long) gkPwHandle);
|
||||
}
|
||||
startActivityForResult(intent, AUTO_ADD_FIRST_FINGERPRINT_REQUEST);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user