Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8bc0c721 authored by Jay Aliomer's avatar Jay Aliomer
Browse files

Verify that section buckets and header controllers are contiguous

Fixes: 204453772
Test: pipeline tests
Change-Id: Iabd16e11bffb4d2da290c6e8a94b85d08085493a
parent 33e3c435
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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()));
+9 −0
Original line number Diff line number Diff line
@@ -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")
            }