Fix Clock flickers after reboot with strong authentication

After boot, the device request the strong authentication but
finger print is not strong. The keyguard will appear after collapsing
NotificationPanelView.

Because StatusBarKeyguardViewManager.mExpansionCallback.onFullyShown
->updateStates should call mStatusBar.setBouncerShowing(true)
before PanelBar.mExpanded = false but
StatusBarKeyguardViewManager.mBouncer.isShowing() return false,
StatusBarKeyguardViewManager.updateStates doesn't call
mStatusBar.setBouncerShowing.

After PanelBar.mExpanded = false, PhoneStatusBarView post runnable
mHideExpandedRunnable to show the Bouncer and make the Bouncer to be
showing and then change the NotificationPanelView to be VISIBLE.

The solution is to call
mStatusBarKeyguardViewManager.showBouncer(false) before calling
mStatusBarKeyguardViewManager.animateCollapsePanels(
FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR). To make the
KeyguardBouncer.mRoot to be VISIBLE by KeyguardBouncer.mShowRunnable.

Bug: 78490344
Test: atest SystemUITests
Change-Id: Ia8770cd3ca98007574c0ba18c0464fc2f58b7973
This commit is contained in:
felkachang
2018-05-04 16:25:45 +08:00
committed by Felka Chang
parent 9327d2d757
commit d5060280cb

View File

@@ -266,6 +266,7 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback {
} }
private void showBouncer() { private void showBouncer() {
mStatusBarKeyguardViewManager.showBouncer(false);
mStatusBarKeyguardViewManager.animateCollapsePanels( mStatusBarKeyguardViewManager.animateCollapsePanels(
FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR); FINGERPRINT_COLLAPSE_SPEEDUP_FACTOR);
mPendingShowBouncer = false; mPendingShowBouncer = false;