ConfirmDeviceCredential should respond to cancel when launched through BP

Fixes: 128747871

Test: BiometricPrompt launched by ConfirmDeviceCredential is canceled
Test: ConfirmLock* can also now be canceled
Test: No effect on non-biometric related paths

Change-Id: I237de136e63d523fece87fad7a93f4ecd66d800b
This commit is contained in:
Kevin Chyn
2019-03-25 18:15:57 -07:00
parent 44427259e8
commit eeca918ac7
3 changed files with 46 additions and 9 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.password;
import android.app.KeyguardManager;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.IBiometricConfirmDeviceCredentialCallback;
import android.os.Bundle;
import android.os.UserManager;
import android.util.Log;
@@ -51,6 +52,15 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
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() {
return (this instanceof ConfirmLockPassword.InternalActivity)
|| (this instanceof ConfirmLockPattern.InternalActivity);
@@ -81,6 +91,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
super.onCreate(savedState);
mBiometricManager = getSystemService(BiometricManager.class);
mBiometricManager.registerCancellationCallback(mCancelCallback);
if (mConfirmCredentialTheme == ConfirmCredentialTheme.NORMAL) {
// Prevent the content parent from consuming the window insets because GlifLayout uses