BypassEnabled change is not propagated when face enrollment state changes.
- KeyguardStateController was not calling onFaceAuthEnabledChanged() when the enrollment state changes upstream in KeyguardUpdateMonitor - bypassEnabled getter combines three values: actual setting value && face auth enrolled && posture supports face auth - When the device first boots up, face enrollment state in KeyguardUpdateMonitor is always false - Once AuthController#onEnrollmentsChanged gets invoked, KeyguardUpdateMonitor gets the correct enrollment state - That change is not propagated down to KeyguardBypassController until the bypassEnabled property is read again. Why is this not an issue currently? - In the old system, we keep re-reading the property value which ensures we don't miss the update. - With the new face auth system, we rely on state changes to be published always - When bypassEnabled is initially false, we assume there will be an update when it changes and don't keep re-checking the property value. - However, that update never comes until we auth once, which triggers state changes that eventually make us re-read the property. Bug: 285523886 Test: atest KeyguardBypassControllerTest Test: atest KeyguardUpdateMonitorTest Test: atest KeyguardStateControllerTest Change-Id: I544c3426972dcc03662848096fc1cac1c9412a75
Loading
Please register or sign in to comment