Verify that section buckets and header controllers are contiguous

Fixes: 204453772
Test: pipeline tests
Change-Id: Iabd16e11bffb4d2da290c6e8a94b85d08085493a
This commit is contained in:
Jay Aliomer
2022-03-08 15:30:49 -05:00
parent 33e3c43571
commit 8bc0c721c0
2 changed files with 16 additions and 0 deletions

View File

@@ -230,7 +230,13 @@ public class ShadeListBuilder implements Dumpable {
mPipelineState.requireState(STATE_IDLE);
mNotifSections.clear();
NotifSectioner lastSection = null;
for (NotifSectioner sectioner : sectioners) {
if (lastSection != null && lastSection.getBucket() > sectioner.getBucket()) {
throw new IllegalArgumentException("setSectioners with non contiguous sections "
+ lastSection.getName() + " - " + lastSection.getBucket() + " & "
+ sectioner.getName() + " - " + sectioner.getBucket());
}
final NotifSection section = new NotifSection(sectioner, mNotifSections.size());
final NotifComparator sectionComparator = section.getComparator();
mNotifSections.add(section);
@@ -238,6 +244,7 @@ public class ShadeListBuilder implements Dumpable {
if (sectionComparator != null) {
sectionComparator.setInvalidationListener(this::onNotifComparatorInvalidated);
}
lastSection = sectioner;
}
mNotifSections.add(new NotifSection(DEFAULT_SECTIONER, mNotifSections.size()));

View File

@@ -57,6 +57,7 @@ class NodeSpecBuilder(
var currentSection: NotifSection? = null
val prevSections = mutableSetOf<NotifSection?>()
var lastSection: NotifSection? = null
val showHeaders = sectionHeaderVisibilityProvider.sectionHeadersVisible
val sectionOrder = mutableListOf<NotifSection?>()
val sectionHeaders = mutableMapOf<NotifSection?, NodeController?>()
@@ -65,6 +66,14 @@ class NodeSpecBuilder(
for (entry in notifList) {
val section = entry.section!!
lastSection?.let {
if (it.bucket > section.bucket) {
throw IllegalStateException("buildNodeSpec with non contiguous section " +
"buckets ${it.sectioner.name} - ${it.bucket} & " +
"${it.sectioner.name} - ${it.bucket}")
}
}
lastSection = section
if (prevSections.contains(section)) {
throw java.lang.RuntimeException("Section ${section.label} has been duplicated")
}