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

Commit 036054e8 authored by Aaron Liu's avatar Aaron Liu
Browse files

[LockScreen] Update bar state in NPVC.

When view is attached to window in NPVC, we add a listener to the bar
state controller; however we do not update to the existing bar state if
any. This means that if the listener is added before the bar state
change is made, then we will default to 0 (SHADE) for NVPC. We have
experienced strange LS states because of this.

Bug: 230911766
Test: Added a 5s delay to adding the callback to experience the weird
state. Added a unit test.

Change-Id: Ieb6d6537eb002b03beceef6f701b826df48feeeb
parent 53af3ea3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4842,6 +4842,7 @@ public class NotificationPanelViewController extends PanelViewController {
            mFragmentService.getFragmentHostManager(mView)
                            .addTagListener(QS.TAG, mFragmentListener);
            mStatusBarStateController.addCallback(mStatusBarStateListener);
            mStatusBarStateListener.onStateChanged(mStatusBarStateController.getState());
            mConfigurationController.addCallback(mConfigurationListener);
            // Theme might have changed between inflating this view and attaching it to the
            // window, so
+13 −0
Original line number Diff line number Diff line
@@ -1143,6 +1143,19 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
        assertThat(mNotificationPanelViewController.isQsTracking()).isFalse();
    }

    @Test
    public void testOnAttachRefreshStatusBarState() {
        mStatusBarStateController.setState(KEYGUARD);
        when(mKeyguardStateController.isKeyguardFadingAway()).thenReturn(false);
        for (View.OnAttachStateChangeListener listener : mOnAttachStateChangeListeners) {
            listener.onViewAttachedToWindow(mView);
        }
        verify(mKeyguardStatusViewController).setKeyguardStatusViewVisibility(
                KEYGUARD/*statusBarState*/,
                false/*keyguardFadingAway*/,
                false/*goingToFullShade*/, SHADE/*oldStatusBarState*/);
    }

    private static MotionEvent createMotionEvent(int x, int y, int action) {
        return MotionEvent.obtain(
                /* downTime= */ 0, /* eventTime= */ 0, action, x, y, /* metaState= */ 0);