From 53e8cfe794ef0e1295e526b21c557c2a17e597ad Mon Sep 17 00:00:00 2001 From: Tiger Huang Date: Thu, 17 May 2018 16:45:56 +0800 Subject: [PATCH] Prevent infinite layout while hiding nav bar on keyguard By the original logic, if there is a focused window which hides navigation bar while keyguard is showing, PhoneWindowManager would hide/show navigation bar frequently, which caused infinite layout. Bug: 78681867 Test: 1. Open a photo in fullscreen mode (hiding navigation bar) 2. Press power key to bring up keyguard 3. See if there is "Performed 6 layouts in a row. Skipping" log Change-Id: Id8c49ac8fc45b98294e48017308dce3117ed1cf8 --- .../java/com/android/server/policy/PhoneWindowManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0792acdc418de..525852064deec 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -5743,7 +5743,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mStatusBarController.updateVisibilityLw(false /*transientAllowed*/, mLastSystemUiFlags, mLastSystemUiFlags); } - if (statusBarExpanded && mNavigationBar != null) { + final boolean isKeyguardShowing = isStatusBarKeyguard() && !mKeyguardOccluded; + if (statusBarExpanded && !isKeyguardShowing && mNavigationBar != null) { if (mNavigationBarController.setBarShowingLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; }