[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
This commit is contained in:
Aaron Liu
2022-05-23 20:59:26 +00:00
parent 53af3ea395
commit 036054e88c
2 changed files with 14 additions and 0 deletions

View File

@@ -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

View File

@@ -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);