sysui: show empty view in split mode

When showing the notification shade in split mode, the empty view was
not showing. This should fix it. If it is in split mode, it doesn't
matter if Quick Settings is expanded or not, it should always show the
empty view (depending on the other requisites).

Also changing the name of the test file and class so it is correctly
indexable in IntelliJ.

Bug: 188894961
Test: added test NotificationStackScrollLayoutControllerTest#testUpdateEmptyShadeView_splitShadeMode_alwaysShowEmptyView
Change-Id: I0d1228bff778cd9699afeda1431b69f77e3d3028
This commit is contained in:
Thales Lima
2021-06-01 16:45:11 +00:00
parent 0aea7a93e4
commit 4d49d72618
3 changed files with 46 additions and 11 deletions

View File

@@ -5232,6 +5232,10 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mSwipeHelper.resetExposedMenuView(animate, force);
}
boolean isUsingSplitNotificationShade() {
return mShouldUseSplitNotificationShade;
}
static boolean matchesSelection(
ExpandableNotificationRow row,
@SelectedRows int selection) {

View File

@@ -1103,11 +1103,16 @@ public class NotificationStackScrollLayoutController {
/**
* Update whether we should show the empty shade view (no notifications in the shade).
* If so, send the update to our view.
*
* When in split mode, notifications are always visible regardless of the state of the
* QuickSettings panel. That being the case, empty view is always shown if the other conditions
* are true.
*/
public void updateShowEmptyShadeView() {
mShowEmptyShadeView = mBarState != KEYGUARD
&& !mView.isQsExpanded()
&& (!mView.isQsExpanded() || mView.isUsingSplitNotificationShade())
&& mView.getVisibleNotificationCount() == 0;
mView.updateEmptyShadeView(
mShowEmptyShadeView,
mZenModeController.areNotificationsHiddenInShade());

View File

@@ -92,7 +92,7 @@ import org.mockito.MockitoAnnotations;
*/
@SmallTest
@RunWith(AndroidTestingRunner.class)
public class NotificationStackScrollerControllerTest extends SysuiTestCase {
public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
@Mock private NotificationGutsManager mNotificationGutsManager;
@Mock private HeadsUpManagerPhone mHeadsUpManager;
@@ -232,16 +232,15 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
true /* visible */,
true /* notifVisibleInShade */);
/* visible= */ true,
/* notifVisibleInShade= */ true);
setupShowEmptyShadeViewState(stateListener, false);
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
false /* visible */,
true /* notifVisibleInShade */);
/* visible= */ false,
/* notifVisibleInShade= */ true);
}
@Test
@@ -257,15 +256,42 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
true /* visible */,
false /* notifVisibleInShade */);
/* visible= */ true,
/* notifVisibleInShade= */ false);
setupShowEmptyShadeViewState(stateListener, false);
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
false /* visible */,
false /* notifVisibleInShade */);
/* visible= */ false,
/* notifVisibleInShade= */ false);
}
@Test
public void testUpdateEmptyShadeView_splitShadeMode_alwaysShowEmptyView() {
when(mZenModeController.areNotificationsHiddenInShade()).thenReturn(false);
mController.attach(mNotificationStackScrollLayout);
verify(mSysuiStatusBarStateController).addCallback(
mStateListenerArgumentCaptor.capture(), anyInt());
StatusBarStateController.StateListener stateListener =
mStateListenerArgumentCaptor.getValue();
when(mNotificationStackScrollLayout.isUsingSplitNotificationShade()).thenReturn(true);
stateListener.onStateChanged(SHADE);
mController.getView().removeAllViews();
mController.setQsExpanded(false);
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
/* visible= */ true,
/* notifVisibleInShade= */ false);
mController.setQsExpanded(true);
reset(mNotificationStackScrollLayout);
mController.updateShowEmptyShadeView();
verify(mNotificationStackScrollLayout).updateEmptyShadeView(
/* visible= */ true,
/* notifVisibleInShade= */ false);
}
@Test