From 56c745c38e08694367321ac9f24b2a8dc083e024 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Wed, 23 Jan 2019 18:08:17 -0800 Subject: [PATCH] Plumb setRequireConfirmation to CC Bug: 111461540 Test: Tested with modified demo app with original and new KeyguardManager APIs Change-Id: I56585fbfd704195586f2f516b35e9338e91b0346 --- .../android/settings/password/BiometricFragment.java | 11 +++++++++++ .../password/ConfirmDeviceCredentialActivity.java | 11 ++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java index 3a12bacfd8a..d098379cf4f 100644 --- a/src/com/android/settings/password/BiometricFragment.java +++ b/src/com/android/settings/password/BiometricFragment.java @@ -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); } diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java index 5eb1f322c27..0d9b21d7c9a 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java @@ -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;