Removed old settings device credential logic.

Bug: 140128468
Test: Verified with biometricpromptdemo that confirm device credential
still works correctly.
Change-Id: I0f608ba1256c696317402f56549452bf6933066b
This commit is contained in:
joshmccloskey
2019-09-17 14:05:51 -07:00
parent af1cd790bf
commit 3786016993
6 changed files with 11 additions and 107 deletions

View File

@@ -4024,14 +4024,6 @@
<!-- About phone settings screen, Safety Legal dialog title until the link is fully loaded --> <!-- About phone settings screen, Safety Legal dialog title until the link is fully loaded -->
<string name="settings_safetylegal_activity_loading">Loading\u2026</string> <string name="settings_safetylegal_activity_loading">Loading\u2026</string>
<!-- ConfirmDeviceCredential settings-->
<!-- Button text shown on BiometricPrompt (system dialog that asks for biometric authentication) giving the user the option to use an alternate form of authentication (Pin) [CHAR LIMIT=30] -->
<string name="confirm_device_credential_pin">Use PIN</string>
<!-- Button text shown on BiometricPrompt (system dialog that asks for biometric authentication) giving the user the option to use an alternate form of authentication (Pattern) [CHAR LIMIT=30] -->
<string name="confirm_device_credential_pattern">Use pattern</string>
<!-- Button text shown on BiometricPrompt (system dialog that asks for biometric authentication) giving the user the option to use an alternate form of authentication (Pass) [CHAR LIMIT=30] -->
<string name="confirm_device_credential_password">Use password</string>
<!-- Lock Pattern settings --> <!-- Lock Pattern settings -->
<!-- Header on first screen of choose password/PIN flow [CHAR LIMIT=40] --> <!-- Header on first screen of choose password/PIN flow [CHAR LIMIT=40] -->
<string name="lockpassword_choose_your_screen_lock_header">Set screen lock</string> <string name="lockpassword_choose_your_screen_lock_header">Set screen lock</string>

View File

@@ -24,7 +24,6 @@ import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.BiometricPrompt.AuthenticationCallback; import android.hardware.biometrics.BiometricPrompt.AuthenticationCallback;
import android.hardware.biometrics.BiometricPrompt.AuthenticationResult; import android.hardware.biometrics.BiometricPrompt.AuthenticationResult;
import android.hardware.biometrics.IBiometricConfirmDeviceCredentialCallback;
import android.os.Bundle; import android.os.Bundle;
import android.os.CancellationSignal; import android.os.CancellationSignal;
import android.os.Handler; import android.os.Handler;
@@ -91,20 +90,6 @@ public class BiometricFragment extends InstrumentedFragment {
} }
}; };
// TODO(b/123378871): Remove when moved.
private final IBiometricConfirmDeviceCredentialCallback mCancelCallback
= new IBiometricConfirmDeviceCredentialCallback.Stub() {
@Override
public void cancel() {
final Activity activity = getActivity();
if (activity != null) {
activity.finish();
} else {
Log.e(TAG, "Activity null!");
}
}
};
/** /**
* @param bundle Bundle passed from {@link BiometricPrompt.Builder#buildIntent()} * @param bundle Bundle passed from {@link BiometricPrompt.Builder#buildIntent()}
* @return * @return
@@ -150,46 +135,19 @@ public class BiometricFragment extends InstrumentedFragment {
final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(getContext()) final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(getContext())
.setTitle(mBundle.getString(BiometricPrompt.KEY_TITLE)) .setTitle(mBundle.getString(BiometricPrompt.KEY_TITLE))
.setUseDefaultTitle() // use default title if title is null/empty .setUseDefaultTitle() // use default title if title is null/empty
.setFromConfirmDeviceCredential() .setDeviceCredentialAllowed(true)
.setSubtitle(mBundle.getString(BiometricPrompt.KEY_SUBTITLE)) .setSubtitle(mBundle.getString(BiometricPrompt.KEY_SUBTITLE))
.setDescription(mBundle.getString(BiometricPrompt.KEY_DESCRIPTION)) .setDescription(mBundle.getString(BiometricPrompt.KEY_DESCRIPTION))
.setConfirmationRequired( .setConfirmationRequired(
mBundle.getBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true)); mBundle.getBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true));
final LockPatternUtils lockPatternUtils = FeatureFactory.getFactory(
getContext())
.getSecurityFeatureProvider()
.getLockPatternUtils(getContext());
switch (lockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) {
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
builder.setNegativeButton(getResources().getString(
R.string.confirm_device_credential_pattern),
mClientExecutor, mNegativeButtonListener);
break;
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
builder.setNegativeButton(getResources().getString(
R.string.confirm_device_credential_pin),
mClientExecutor, mNegativeButtonListener);
break;
case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
case DevicePolicyManager.PASSWORD_QUALITY_MANAGED:
builder.setNegativeButton(getResources().getString(
R.string.confirm_device_credential_password),
mClientExecutor, mNegativeButtonListener);
break;
}
mBiometricPrompt = builder.build(); mBiometricPrompt = builder.build();
mCancellationSignal = new CancellationSignal(); mCancellationSignal = new CancellationSignal();
// TODO: CC doesn't use crypto for now // TODO: CC doesn't use crypto for now
mAuthenticating = true; mAuthenticating = true;
mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor, mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor,
mAuthenticationCallback, mUserId, mCancelCallback); mAuthenticationCallback, mUserId);
} }
@Override @Override

View File

@@ -90,8 +90,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
private TrustManager mTrustManager; private TrustManager mTrustManager;
private ChooseLockSettingsHelper mChooseLockSettingsHelper; private ChooseLockSettingsHelper mChooseLockSettingsHelper;
private Handler mHandler = new Handler(Looper.getMainLooper()); private Handler mHandler = new Handler(Looper.getMainLooper());
private boolean mIsFallback; // BiometricPrompt fallback
private boolean mCCLaunched;
private String mTitle; private String mTitle;
private String mDetails; private String mDetails;
@@ -108,10 +106,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
if (!mGoingToBackground) { if (!mGoingToBackground) {
if (errorCode == BiometricPrompt.BIOMETRIC_ERROR_USER_CANCELED if (errorCode == BiometricPrompt.BIOMETRIC_ERROR_USER_CANCELED
|| errorCode == BiometricPrompt.BIOMETRIC_ERROR_CANCELED) { || errorCode == BiometricPrompt.BIOMETRIC_ERROR_CANCELED) {
if (mIsFallback) {
mBiometricManager.onConfirmDeviceCredentialError(
errorCode, getStringForError(errorCode));
}
finish(); finish();
} else { } else {
// All other errors go to some version of CC // All other errors go to some version of CC
@@ -128,10 +122,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
ConfirmDeviceCredentialUtils.checkForPendingIntent( ConfirmDeviceCredentialUtils.checkForPendingIntent(
ConfirmDeviceCredentialActivity.this); ConfirmDeviceCredentialActivity.this);
if (mIsFallback) {
mBiometricManager.onConfirmDeviceCredentialSuccess();
}
setResult(Activity.RESULT_OK); setResult(Activity.RESULT_OK);
finish(); finish();
} }
@@ -183,17 +173,11 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
final LockPatternUtils lockPatternUtils = new LockPatternUtils(this); final LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
Bundle bpBundle = final Bundle bpBundle = new Bundle();
intent.getBundleExtra(KeyguardManager.EXTRA_BIOMETRIC_PROMPT_BUNDLE);
if (bpBundle != null) {
mIsFallback = true;
mTitle = bpBundle.getString(BiometricPrompt.KEY_TITLE); mTitle = bpBundle.getString(BiometricPrompt.KEY_TITLE);
mDetails = bpBundle.getString(BiometricPrompt.KEY_SUBTITLE); mDetails = bpBundle.getString(BiometricPrompt.KEY_SUBTITLE);
} else {
bpBundle = new Bundle();
bpBundle.putString(BiometricPrompt.KEY_TITLE, mTitle); bpBundle.putString(BiometricPrompt.KEY_TITLE, mTitle);
bpBundle.putString(BiometricPrompt.KEY_DESCRIPTION, mDetails); bpBundle.putString(BiometricPrompt.KEY_DESCRIPTION, mDetails);
}
boolean launchedBiometric = false; boolean launchedBiometric = false;
boolean launchedCDC = false; boolean launchedCDC = false;
@@ -257,12 +241,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
} }
} }
if (mIsFallback && !mCCLaunched) {
mBiometricManager.onConfirmDeviceCredentialError(
BiometricConstants.BIOMETRIC_ERROR_CANCELED,
getString(com.android.internal.R.string.biometric_error_user_canceled));
}
finish(); finish();
} else { } else {
mGoingToBackground = false; mGoingToBackground = false;
@@ -314,7 +292,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
* Shows ConfirmDeviceCredentials for normal apps. * Shows ConfirmDeviceCredentials for normal apps.
*/ */
private void showConfirmCredentials() { private void showConfirmCredentials() {
mCCLaunched = true;
boolean launched = false; boolean launched = false;
// The only difference between CREDENTIAL_MANAGED and CREDENTIAL_NORMAL is that for // The only difference between CREDENTIAL_MANAGED and CREDENTIAL_NORMAL is that for
// CREDENTIAL_MANAGED, we launch the real confirm credential activity with an explicit // CREDENTIAL_MANAGED, we launch the real confirm credential activity with an explicit

View File

@@ -17,15 +17,12 @@
package com.android.settings.password; package com.android.settings.password;
import android.app.KeyguardManager; import android.app.KeyguardManager;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.IBiometricConfirmDeviceCredentialCallback;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserManager; import android.os.UserManager;
import android.util.Log; import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.LinearLayout;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@@ -50,16 +47,6 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
private boolean mFirstTimeVisible = true; private boolean mFirstTimeVisible = true;
private boolean mIsKeyguardLocked = false; private boolean mIsKeyguardLocked = false;
private ConfirmCredentialTheme mConfirmCredentialTheme; private ConfirmCredentialTheme mConfirmCredentialTheme;
private BiometricManager mBiometricManager;
// TODO(b/123378871): Remove when moved.
private final IBiometricConfirmDeviceCredentialCallback mCancelCallback
= new IBiometricConfirmDeviceCredentialCallback.Stub() {
@Override
public void cancel() {
finish();
}
};
private boolean isInternalActivity() { private boolean isInternalActivity() {
return (this instanceof ConfirmLockPassword.InternalActivity) return (this instanceof ConfirmLockPassword.InternalActivity)
@@ -90,9 +77,6 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
} }
super.onCreate(savedState); super.onCreate(savedState);
mBiometricManager = getSystemService(BiometricManager.class);
mBiometricManager.registerCancellationCallback(mCancelCallback);
if (mConfirmCredentialTheme == ConfirmCredentialTheme.NORMAL) { if (mConfirmCredentialTheme == ConfirmCredentialTheme.NORMAL) {
// Prevent the content parent from consuming the window insets because GlifLayout uses // Prevent the content parent from consuming the window insets because GlifLayout uses
// it to show the status bar background. // it to show the status bar background.
@@ -167,17 +151,12 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
@Override @Override
public void onStop() { public void onStop() {
super.onStop(); super.onStop();
// TODO(b/123378871): Remove when moved. final boolean foregroundOnly = getIntent().getBooleanExtra(
if (!isChangingConfigurations()) { ChooseLockSettingsHelper.EXTRA_KEY_FOREGROUND_ONLY, false);
mBiometricManager.onConfirmDeviceCredentialError( if (!isChangingConfigurations() && foregroundOnly) {
BiometricConstants.BIOMETRIC_ERROR_USER_CANCELED,
getString(com.android.internal.R.string.biometric_error_user_canceled));
if (getIntent().getBooleanExtra(
ChooseLockSettingsHelper.EXTRA_KEY_FOREGROUND_ONLY, false)) {
finish(); finish();
} }
} }
}
@Override @Override
public void finish() { public void finish() {

View File

@@ -446,7 +446,6 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils,
mUserManager, mEffectiveUserId); mUserManager, mEffectiveUserId);
} }
mBiometricManager.onConfirmDeviceCredentialSuccess();
startDisappearAnimation(intent); startDisappearAnimation(intent);
ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity()); ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity());
} else { } else {

View File

@@ -490,7 +490,6 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils, ConfirmDeviceCredentialUtils.reportSuccessfulAttempt(mLockPatternUtils,
mUserManager, mEffectiveUserId); mUserManager, mEffectiveUserId);
} }
mBiometricManager.onConfirmDeviceCredentialSuccess();
startDisappearAnimation(intent); startDisappearAnimation(intent);
ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity()); ConfirmDeviceCredentialUtils.checkForPendingIntent(getActivity());
} else { } else {