Plumb setRequireConfirmation to CC

Bug: 111461540

Test: Tested with modified demo app with
      original and new KeyguardManager APIs

Change-Id: I56585fbfd704195586f2f516b35e9338e91b0346
This commit is contained in:
Kevin Chyn
2019-01-23 18:08:17 -08:00
parent 7c7e0d4d7d
commit 56c745c38e
2 changed files with 19 additions and 3 deletions

View File

@@ -45,6 +45,7 @@ public class BiometricFragment extends InstrumentedFragment {
private static final String KEY_SUBTITLE = "subtitle";
private static final String KEY_DESCRIPTION = "description";
private static final String KEY_NEGATIVE_TEXT = "negative_text";
private static final String KEY_REQUIRE_CONFIRMATION = "require_confirmation";
// Re-set by the application. Should be done upon orientation changes, etc
private Executor mClientExecutor;
@@ -129,6 +130,7 @@ public class BiometricFragment extends InstrumentedFragment {
.setDescription(mPromptInfo.getDescription())
.setNegativeButton(mPromptInfo.getNegativeButtonText(), mClientExecutor,
mNegativeButtonListener)
.setRequireConfirmation(mPromptInfo.getRequireConfirmation())
.build();
mCancellationSignal = new CancellationSignal();
@@ -173,6 +175,10 @@ public class BiometricFragment extends InstrumentedFragment {
return mBundle.getCharSequence(KEY_NEGATIVE_TEXT);
}
public boolean getRequireConfirmation() {
return mBundle.getBoolean(KEY_REQUIRE_CONFIRMATION);
}
public static class Builder {
private final Bundle mBundle = new Bundle();
@@ -196,6 +202,11 @@ public class BiometricFragment extends InstrumentedFragment {
return this;
}
public Builder setRequireConfirmation(boolean requireConfirmation) {
mBundle.putBoolean(KEY_REQUIRE_CONFIRMATION, requireConfirmation);
return this;
}
public PromptInfo build() {
return new PromptInfo(mBundle);
}

View File

@@ -136,6 +136,10 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
Intent intent = getIntent();
mTitle = intent.getStringExtra(KeyguardManager.EXTRA_TITLE);
mDetails = intent.getStringExtra(KeyguardManager.EXTRA_DESCRIPTION);
final boolean requireConfirmation =
!intent.getBooleanExtra(KeyguardManager.EXTRA_USE_IMPLICIT, true);
String alternateButton = intent.getStringExtra(
KeyguardManager.EXTRA_ALTERNATE_BUTTON_LABEL);
boolean frp = KeyguardManager.ACTION_CONFIRM_FRP_CREDENTIAL.equals(intent.getAction());
@@ -170,7 +174,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
&& !lockPatternUtils.isSeparateProfileChallengeEnabled(mUserId)) {
mCredentialMode = CREDENTIAL_MANAGED;
if (isBiometricAllowed(effectiveUserId)) {
showBiometricPrompt();
showBiometricPrompt(requireConfirmation);
launchedBiometric = true;
} else {
showConfirmCredentials();
@@ -181,7 +185,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
if (isBiometricAllowed(effectiveUserId)) {
// Don't need to check if biometrics / pin/pattern/pass are enrolled. It will go to
// onAuthenticationError and do the right thing automatically.
showBiometricPrompt();
showBiometricPrompt(requireConfirmation);
launchedBiometric = true;
} else {
showConfirmCredentials();
@@ -242,7 +246,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
&& !isBiometricDisabledByAdmin(effectiveUserId);
}
private void showBiometricPrompt() {
private void showBiometricPrompt(boolean requireConfirmation) {
mBiometricManager.setActiveUser(mUserId);
mBiometricFragment = (BiometricFragment) getSupportFragmentManager()
@@ -255,6 +259,7 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
.setSubtitle(mDetails)
.setNegativeButtonText(getResources()
.getString(R.string.confirm_device_credential_use_alternate_method))
.setRequireConfirmation(requireConfirmation)
.build();
mBiometricFragment = BiometricFragment.newInstance(info);
newFragment = true;