Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a694b735 authored by Justin Weir's avatar Justin Weir
Browse files

Possible fix and additional logging for b/337742708

Logs indicate that the keyguard status bar is switching to visible
at startup due to the presence of the message "Updating keyguard
status bar state to visible" early in the shade log. This can only
happen in NPVC.StatusBarStateListener.onStateChanged, meaning the
status bar is possibly being shown on AOD due to bad state during
initialization of NPVC. This change adds a boolean that is set
during onViewAttachedToWindow to bypass the code that could
theoretically show the status bar on AOD during init.

Test: verified that the status bar still shows on lockscreen
Bug: 337742708
Flag: EXEMPT bug fix
Change-Id: I8afe59abcfd82c27c37af9aa2beb7cde8bb1a91a
parent 5c405e11
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -4536,6 +4536,13 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
    private final class StatusBarStateListener implements StateListener {
        @Override
        public void onStateChanged(int statusBarState) {
            onStateChanged(statusBarState, false);
        }

        private void onStateChanged(
                int statusBarState,
                boolean animatingUnlockedShadeToKeyguardBypass
        ) {
            boolean goingToFullShade = mStatusBarStateController.goingToFullShade();
            boolean keyguardFadingAway = mKeyguardStateController.isKeyguardFadingAway();
            int oldState = mBarState;
@@ -4607,15 +4614,14 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
                //  - getting notified again about the current SHADE or KEYGUARD state
                final boolean animatingUnlockedShadeToKeyguard = oldState == SHADE
                        && statusBarState == KEYGUARD
                        && mScreenOffAnimationController.isKeyguardShowDelayed();
                        && mScreenOffAnimationController.isKeyguardShowDelayed()
                        //Bypasses animatingUnlockedShadeToKeyguard for b/337742708
                        && !animatingUnlockedShadeToKeyguardBypass;
                if (!animatingUnlockedShadeToKeyguard) {
                    // Only make the status bar visible if we're not animating the screen off, since
                    // we only want to be showing the clock/notifications during the animation.
                    if (keyguardShowing) {
                        mShadeLog.v("Updating keyguard status bar state to visible");
                    } else {
                        mShadeLog.v("Updating keyguard status bar state to invisible");
                    }
                    mShadeLog.logKeyguardStatudBarVisibiliy(keyguardShowing, isOnAod(),
                            animatingUnlockedShadeToKeyguardBypass, oldState, statusBarState);
                    mKeyguardStatusBarViewController.updateViewState(
                            /* alpha= */ 1f,
                            keyguardShowing ? View.VISIBLE : View.INVISIBLE);
@@ -4692,7 +4698,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
                    .addTagListener(QS.TAG, mQsController.getQsFragmentListener());
            if (!SceneContainerFlag.isEnabled()) {
                mStatusBarStateController.addCallback(mStatusBarStateListener);
                mStatusBarStateListener.onStateChanged(mStatusBarStateController.getState());
                // Bypass animatingUnlockedShadeToKeyguard in onStateChanged for b/337742708
                mStatusBarStateListener.onStateChanged(mStatusBarStateController.getState(), true);
            }
            mConfigurationController.addCallback(mConfigurationListener);
            // Theme might have changed between inflating this view and attaching it to the
+25 −0
Original line number Diff line number Diff line
@@ -411,4 +411,29 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) {
            }
        )
    }

    fun logKeyguardStatudBarVisibiliy(
        visibility: Boolean,
        isOnAod: Boolean,
        animatingUnlockedShadeToKeyguardBypass: Boolean,
        oldShadeState: Int,
        newShadeState: Int,
    ) {
        buffer.log(
            TAG,
            LogLevel.VERBOSE,
            {
                bool1 = visibility
                bool2 = isOnAod
                bool3 = animatingUnlockedShadeToKeyguardBypass
                int1 = oldShadeState
                int2 = newShadeState
            },
            {
                "Setting keyguard status bar visibility to: $bool1, isOnAod: $bool2" +
                    "oldShadeState: $int1, newShadeState: $int2," +
                    "animatingUnlockedShadeToKeyguardBypass: $bool3"
            }
        )
    }
}