From 7c67110adf2178821ad3d7345953e209e560956c Mon Sep 17 00:00:00 2001 From: Josh Tsuji Date: Thu, 31 Mar 2022 16:17:04 -0400 Subject: [PATCH] Fix issue where cold-start launching an activity from the shade while an occluding activity is visible would result in an inescapable black screen. Fixes: 227341125 Test: use Notify.apk (go/notify-apk) to post a notification that'll launch an activity, then force close Notify, open a Meet call (or other SHOW_WHEN_LOCKED activity), lock the phone, press the power button, pull down the shade, tap the Notify notification, UDFPS, note no inescapable black screen Merged-In: I57c57cbb156dae79fa46e917285330f07ff7edce Change-Id: I57c57cbb156dae79fa46e917285330f07ff7edce --- .../src/com/android/systemui/statusbar/phone/StatusBar.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 0eefc9404825a..a6fb317cdfc87 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1351,8 +1351,11 @@ public class StatusBar extends SystemUI implements * keyguard. */ private void dispatchPanelExpansionForKeyguardDismiss(float fraction, boolean trackingTouch) { - // Things that mean we're not dismissing the keyguard, and should ignore this expansion: + // Things that mean we're not swiping to dismiss the keyguard, and should ignore this + // expansion: // - Keyguard isn't even visible. + // - Keyguard is occluded. Expansion changes here are the shade being expanded over the + // occluding activity. // - Keyguard is visible, but can't be dismissed (swiping up will show PIN/password prompt). // - The SIM is locked, you can't swipe to unlock. If the SIM is locked but there is no // device lock set, canDismissLockScreen returns true even though you should not be able @@ -1360,6 +1363,7 @@ public class StatusBar extends SystemUI implements // - QS is expanded and we're swiping - swiping up now will hide QS, not dismiss the // keyguard. if (!isKeyguardShowing() + || mIsOccluded || !mKeyguardStateController.canDismissLockScreen() || mKeyguardViewMediator.isAnySimPinSecure() || (mNotificationPanelViewController.isQsExpanded() && trackingTouch)) {