Propagate status bar state to NSSL on reattach

Fixes: 250032065
Test: atest NotificationStackScrollLayoutControllerTest
Change-Id: Ib6f7d25ee79e621b6f2d07804fb05f63aaf88ef6
This commit is contained in:
Steve Elliott
2023-02-27 21:03:11 +00:00
parent 2b9ee44d55
commit 790b46483e
2 changed files with 36 additions and 1 deletions

View File

@@ -209,7 +209,11 @@ public class NotificationStackScrollLayoutController {
public void onViewAttachedToWindow(View v) {
mConfigurationController.addCallback(mConfigurationListener);
mZenModeController.addCallback(mZenModeControllerCallback);
mBarState = mStatusBarStateController.getState();
final int newBarState = mStatusBarStateController.getState();
if (newBarState != mBarState) {
mStateListener.onStateChanged(newBarState);
mStateListener.onStatePostChange();
}
mStatusBarStateController.addCallback(
mStateListener, SysuiStatusBarStateController.RANK_STACK_SCROLLER);
}

View File

@@ -413,6 +413,37 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
verify(mNotificationStackScrollLayout).updateEmptyShadeView(anyBoolean(), anyBoolean());
}
@Test
public void testAttach_updatesViewStatusBarState() {
// GIVEN: Controller is attached
mController.attach(mNotificationStackScrollLayout);
ArgumentCaptor<StatusBarStateController.StateListener> captor =
ArgumentCaptor.forClass(StatusBarStateController.StateListener.class);
verify(mSysuiStatusBarStateController).addCallback(captor.capture(), anyInt());
StatusBarStateController.StateListener stateListener = captor.getValue();
// WHEN: StatusBarState changes to SHADE
when(mSysuiStatusBarStateController.getState()).thenReturn(SHADE);
stateListener.onStateChanged(SHADE);
// THEN: NSSL is updated with the current state
verify(mNotificationStackScrollLayout).setStatusBarState(SHADE);
// WHEN: Controller is detached
mController.mOnAttachStateChangeListener
.onViewDetachedFromWindow(mNotificationStackScrollLayout);
// WHEN: StatusBarState changes to KEYGUARD
when(mSysuiStatusBarStateController.getState()).thenReturn(KEYGUARD);
// WHEN: Controller is re-attached
mController.mOnAttachStateChangeListener
.onViewAttachedToWindow(mNotificationStackScrollLayout);
// THEN: NSSL is updated with the current state
verify(mNotificationStackScrollLayout).setStatusBarState(KEYGUARD);
}
private LogMaker logMatcher(int category, int type) {
return argThat(new LogMatcher(category, type));
}