Fix issue where notifications remained hidden on lock screen after two quick power presses.

Tested at ToT and can't reproduce either the missing notifications, or the b/184396499 issue where the shade's notifications would be missing after allowing the phone to timeout and then using fingerprint bypass.

Fixes: 184028145
Bug: 184396499
Test: press power to lock and press it again quickly to cancel
Test: allow screen to timeout, then bypass using fingerprint
Change-Id: I3aa2ac74a1cf90a400cb7240453ee2af0015556e
This commit is contained in:
Josh Tsuji
2021-05-11 14:24:38 -04:00
parent 25ad053080
commit a00471a718
2 changed files with 12 additions and 1 deletions

View File

@@ -393,6 +393,11 @@ class NotificationWakeUpCoordinator @Inject constructor(
override fun onDozingChanged(isDozing: Boolean) {
if (isDozing) {
setNotificationsVisible(visible = false, animate = false, increaseSpeed = false)
} else {
// We only unset the flag once we fully went asleep. If the user interrupts the
// animation in the middle, we have to abort the animation as well to make sure
// the notifications are visible again.
animatingScreenOff = false
}
}

View File

@@ -3609,10 +3609,16 @@ public class StatusBar extends SystemUI implements DemoMode,
boolean visibleNotOccluded = mStatusBarKeyguardViewManager.isShowing()
&& !mStatusBarKeyguardViewManager.isOccluded();
// If we're dozing and we'll be animating the screen off, the keyguard isn't currently
// visible but will be shortly for the animation, so we should proceed as if it's visible.
boolean visibleNotOccludedOrWillBe =
visibleNotOccluded || (mDozing && mDozeParameters.shouldControlUnlockedScreenOff());
boolean wakeAndUnlock = mBiometricUnlockController.getMode()
== BiometricUnlockController.MODE_WAKE_AND_UNLOCK;
boolean animate = (!mDozing && mDozeServiceHost.shouldAnimateWakeup() && !wakeAndUnlock)
|| (mDozing && mDozeServiceHost.shouldAnimateScreenOff() && visibleNotOccluded);
|| (mDozing && mDozeServiceHost.shouldAnimateScreenOff()
&& visibleNotOccludedOrWillBe);
mNotificationPanelViewController.setDozing(mDozing, animate, mWakeUpTouchLocation);
updateQsExpansionEnabled();