1/n: Move BiometricDialog management to BiometricService
The BiometricDialog management was done in AuthenticationClient, but this is not great for the following reasons 1) The dialog lifecycle should not be 1:1 tied to the client monitor, since this restricts flexibility 2) Devices with multiple biometrics implemented on BiometricDialog will require extra work. Moving the dialog management up one layer should solve this limitation BiometricService now sends both its own receiver and the client's receiver to the appropriate <Biometric>Service. When the client is actually started by the <Biometric>Service, it will forward the client's (BiometricPrompt's) receiver to BiometricService. Lifecycle management is currently still in <Biometric>Service since the platform still uses <Biometric>Service directly. AuthenticationClient for BP is now started with the wrapper receiver, which allows BiometricService to handle messages before deciding if it should forward the message to the client. Moving lifecycle management to BiometricService is currently not a great idea since framework doesn't always go through BiometricService. Also merged IBiometricPromptReceiver with IBiometricServiceReceiver Bug: 111461540 Test: Negative button works (error received by demo app) Test: Cancelling via back or tapping gray area works (error received by demo app), and hardware is no longer authenticating Test: Dismissing BP via negative button or gray area returns only a single error and is not followed by ERROR_CANCELED (as expected) Test: Error messages are delayed when BP is showing, not delayed when BP is not showing (pre-auth check errors e.g. no hardware) Test: Lockout works Test: Lockout counter resets upon successful auth Test: Keys are unlocked properly for both implicit and explicit modes TODO: Figure out multi-modal BiometricService / <Biometric>Service synchronization. Likely we keep the bundle in BiometricService and send random numbers (identifier) to <Biometric>Service. When each <Biometric>Service is ready, it should return the number. Once BiometricService receives all identifiers, it can then notify all <Biometric>Service to start authenticating. Change-Id: I2b6fa57ed3c3cbccc7b0be30279f80fa46a8e917
Loading
Please register or sign in to comment