Update Settings together with generateChallenge/revokeChallenge
The internal implementation of generate/revoke in system_server is now asynchronous. To keep existing clients working, the manager classes introduce a blocking version of the generateChallenge calls. This change updates Settings to use the backward-compatible blocking calls. Bug: 157790417 Test: Enroll fingerprint/face Test: After enrollment, toggle setFeature or do subsequent enrollment in face/fingerprint settings Change-Id: Ib4dfdc5f12530b938ab9b1745f5a19cd9e2eceee
This commit is contained in:
@@ -176,7 +176,7 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
if (mFaceManager == null) {
|
if (mFaceManager == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return mFaceManager.generateChallenge();
|
return mFaceManager.generateChallengeBlocking();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -205,7 +205,7 @@ public class FaceSettings extends DashboardFragment {
|
|||||||
// Generate challenge in onResume instead of onCreate, since FaceSettings can be
|
// Generate challenge in onResume instead of onCreate, since FaceSettings can be
|
||||||
// created while Keyguard is showing, in which case the resetLockout revokeChallenge
|
// created while Keyguard is showing, in which case the resetLockout revokeChallenge
|
||||||
// will invalidate the too-early created challenge here.
|
// will invalidate the too-early created challenge here.
|
||||||
final long challenge = mFaceManager.generateChallenge();
|
final long challenge = mFaceManager.generateChallengeBlocking();
|
||||||
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
|
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
|
||||||
|
|
||||||
mConfirmingPassword = true;
|
mConfirmingPassword = true;
|
||||||
@@ -266,10 +266,7 @@ public class FaceSettings extends DashboardFragment {
|
|||||||
&& !mConfirmingPassword) {
|
&& !mConfirmingPassword) {
|
||||||
// Revoke challenge and finish
|
// Revoke challenge and finish
|
||||||
if (mToken != null) {
|
if (mToken != null) {
|
||||||
final int result = mFaceManager.revokeChallenge();
|
mFaceManager.revokeChallenge();
|
||||||
if (result < 0) {
|
|
||||||
Log.w(TAG, "revokeChallenge failed, result: " + result);
|
|
||||||
}
|
|
||||||
mToken = null;
|
mToken = null;
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
|
@@ -140,10 +140,7 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
|
|||||||
private void postEnroll() {
|
private void postEnroll() {
|
||||||
final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
|
final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
|
||||||
if (fpm != null) {
|
if (fpm != null) {
|
||||||
int result = fpm.postEnroll();
|
fpm.revokeChallenge();
|
||||||
if (result < 0) {
|
|
||||||
Log.w(TAG, "postEnroll failed: result = " + result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,7 +136,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
if (mFingerprintManager == null) {
|
if (mFingerprintManager == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return mFingerprintManager.preEnroll();
|
return mFingerprintManager.generateChallengeBlocking();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -594,10 +594,7 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
if (getActivity().isFinishing()) {
|
if (getActivity().isFinishing()) {
|
||||||
int result = mFingerprintManager.postEnroll();
|
mFingerprintManager.revokeChallenge();
|
||||||
if (result < 0) {
|
|
||||||
Log.w(TAG, "postEnroll failed: result = " + result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -638,7 +635,7 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
|
|
||||||
private void launchChooseOrConfirmLock() {
|
private void launchChooseOrConfirmLock() {
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
long challenge = mFingerprintManager.preEnroll();
|
long challenge = mFingerprintManager.generateChallengeBlocking();
|
||||||
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
|
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
|
||||||
if (!helper.launchConfirmationActivity(CONFIRM_REQUEST,
|
if (!helper.launchConfirmationActivity(CONFIRM_REQUEST,
|
||||||
getString(R.string.security_settings_fingerprint_preference_title),
|
getString(R.string.security_settings_fingerprint_preference_title),
|
||||||
|
@@ -135,7 +135,7 @@ final class SetNewPasswordController {
|
|||||||
|
|
||||||
private Bundle getFingerprintChooseLockExtras() {
|
private Bundle getFingerprintChooseLockExtras() {
|
||||||
Bundle chooseLockExtras = new Bundle();
|
Bundle chooseLockExtras = new Bundle();
|
||||||
long challenge = mFingerprintManager.preEnroll();
|
long challenge = mFingerprintManager.generateChallengeBlocking();
|
||||||
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
||||||
PASSWORD_QUALITY_SOMETHING);
|
PASSWORD_QUALITY_SOMETHING);
|
||||||
chooseLockExtras.putBoolean(
|
chooseLockExtras.putBoolean(
|
||||||
@@ -148,7 +148,7 @@ final class SetNewPasswordController {
|
|||||||
|
|
||||||
private Bundle getFaceChooseLockExtras() {
|
private Bundle getFaceChooseLockExtras() {
|
||||||
Bundle chooseLockExtras = new Bundle();
|
Bundle chooseLockExtras = new Bundle();
|
||||||
long challenge = mFaceManager.generateChallenge();
|
long challenge = mFaceManager.generateChallengeBlocking();
|
||||||
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
||||||
PASSWORD_QUALITY_SOMETHING);
|
PASSWORD_QUALITY_SOMETHING);
|
||||||
chooseLockExtras.putBoolean(
|
chooseLockExtras.putBoolean(
|
||||||
|
@@ -80,10 +80,10 @@ public final class SetNewPasswordControllerTest {
|
|||||||
CURRENT_USER_ID, mPackageManager, mFingerprintManager, mFaceManager,
|
CURRENT_USER_ID, mPackageManager, mFingerprintManager, mFaceManager,
|
||||||
mDevicePolicyManager, mUi);
|
mDevicePolicyManager, mUi);
|
||||||
|
|
||||||
when(mFingerprintManager.preEnroll()).thenReturn(FINGERPRINT_CHALLENGE);
|
when(mFingerprintManager.generateChallengeBlocking()).thenReturn(FINGERPRINT_CHALLENGE);
|
||||||
when(mPackageManager.hasSystemFeature(eq(FEATURE_FINGERPRINT))).thenReturn(true);
|
when(mPackageManager.hasSystemFeature(eq(FEATURE_FINGERPRINT))).thenReturn(true);
|
||||||
|
|
||||||
when(mFaceManager.generateChallenge()).thenReturn(FACE_CHALLENGE);
|
when(mFaceManager.generateChallengeBlocking()).thenReturn(FACE_CHALLENGE);
|
||||||
when(mPackageManager.hasSystemFeature(eq(FEATURE_FACE))).thenReturn(true);
|
when(mPackageManager.hasSystemFeature(eq(FEATURE_FACE))).thenReturn(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,4 +31,9 @@ public class ShadowFingerprintManager extends org.robolectric.shadows.ShadowFing
|
|||||||
protected List<Fingerprint> getEnrolledFingerprints(int userId) {
|
protected List<Fingerprint> getEnrolledFingerprints(int userId) {
|
||||||
return getEnrolledFingerprints();
|
return getEnrolledFingerprints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
protected long generateChallengeBlocking() {
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user