Fix people header placement when only hub visible

Bug: 150166074
Test: atest, manual
Change-Id: If85b08731bad75096e14ea83a59fe6230c337313
This commit is contained in:
Steve Elliott
2020-03-05 11:00:47 -05:00
parent 307d3854f3
commit 6de51a70f1
2 changed files with 27 additions and 0 deletions

View File

@@ -332,6 +332,10 @@ public class NotificationSectionsManager implements StackScrollAlgorithm.Section
// Put it at the end of the list.
peopleHeaderTarget = lastNotifIndex;
}
// Offset the target to account for the current position of the people header.
if (currentPeopleHeaderIdx != -1 && currentPeopleHeaderIdx < peopleHeaderTarget) {
peopleHeaderTarget--;
}
}
// Add headers in reverse order to preserve indices
@@ -459,6 +463,11 @@ public class NotificationSectionsManager implements StackScrollAlgorithm.Section
return mPeopleHubView;
}
@VisibleForTesting
void setPeopleHubVisible(boolean visible) {
mPeopleHubVisible = visible;
}
private final ConfigurationListener mConfigurationListener = new ConfigurationListener() {
@Override
public void onLocaleListChanged() {

View File

@@ -315,6 +315,24 @@ public class NotificationSectionsManagerTest extends SysuiTestCase {
verify(mNssl).changeViewPosition(mSectionsManager.getPeopleHeaderView(), 0);
}
@Test
public void testPeopleFiltering_keepPeopleHeaderWhenSectionEmpty() {
mSectionsManager.setPeopleHubVisible(true);
enablePeopleFiltering();
setStackState(
ChildType.PEOPLE_HEADER,
ChildType.ALERTING_HEADER,
ChildType.ALERTING,
ChildType.GENTLE_HEADER,
ChildType.GENTLE
);
mSectionsManager.updateSectionBoundaries();
verify(mNssl, never()).removeView(mSectionsManager.getPeopleHeaderView());
verify(mNssl).changeViewPosition(mSectionsManager.getPeopleHeaderView(), 0);
}
private void enablePeopleFiltering() {
when(mSectionsFeatureManager.isFilteringEnabled()).thenReturn(true);
when(mSectionsFeatureManager.getNumberOfBuckets()).thenReturn(4);