Force-clear nav bar flags when phone finishes booting.

It looks like there may be a bug in StatusBarManager that prevents it from correctly hiding the home button
if flags to show the home button have not been sent since a restart.

This side-steps that problem by sending an empty dismiss call once after the phone restarts, then following it
immediately with a call to hide the home/recents buttons as needed.

Test: Manual -- no home button visible after restarting phone and opening power menu on lock screen.

Bug: 155663717
Change-Id: I489472e364b34390d20baa28d838687498abe69c
This commit is contained in:
Aran Ink
2020-06-09 16:05:03 -04:00
parent 7ccfc086e4
commit 5d9a184ea4

View File

@@ -654,7 +654,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
@Override
public void onBouncerVisiblityChanged(boolean shown) {
synchronized (KeyguardViewMediator.this) {
adjustStatusBarLocked(shown);
adjustStatusBarLocked(shown, false);
}
}
@@ -2003,10 +2003,12 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
}
private void adjustStatusBarLocked() {
adjustStatusBarLocked(false /* forceHideHomeRecentsButtons */);
adjustStatusBarLocked(false /* forceHideHomeRecentsButtons */,
false /* forceClearFlags */);
}
private void adjustStatusBarLocked(boolean forceHideHomeRecentsButtons) {
private void adjustStatusBarLocked(boolean forceHideHomeRecentsButtons,
boolean forceClearFlags) {
if (mStatusBarManager == null) {
mStatusBarManager = (StatusBarManager)
mContext.getSystemService(Context.STATUS_BAR_SERVICE);
@@ -2018,6 +2020,13 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
// Disable aspects of the system/status/navigation bars that must not be re-enabled by
// windows that appear on top, ever
int flags = StatusBarManager.DISABLE_NONE;
// TODO (b/155663717) After restart, status bar will not properly hide home button
// unless disable is called to show un-hide it once first
if (forceClearFlags) {
mStatusBarManager.disable(flags);
}
if (forceHideHomeRecentsButtons || isShowingAndNotOccluded()) {
if (!mShowHomeOverLockscreen || !mInGestureNavigationMode) {
flags |= StatusBarManager.DISABLE_HOME;
@@ -2141,6 +2150,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
public void onBootCompleted() {
synchronized (this) {
mBootCompleted = true;
adjustStatusBarLocked(false, true);
if (mBootSendUserPresent) {
sendUserPresentBroadcast();
}