diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt index 010b6f80121ce..8182e73ab86b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilder.kt @@ -51,8 +51,10 @@ class NodeSpecBuilder( // If this notif begins a new section, first add the section's header view if (section != currentSection) { - section.headerController?.let { headerController -> - root.children.add(NodeSpecImpl(root, headerController)) + if (section.headerController != currentSection?.headerController) { + section.headerController?.let { headerController -> + root.children.add(NodeSpecImpl(root, headerController)) + } } prevSections.add(currentSection) currentSection = section diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt index ed48452eccc73..6313d3a4c2fa5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt @@ -58,6 +58,7 @@ class NodeSpecBuilderTest : SysuiTestCase() { private val section1 = buildSection(1, section1Bucket, headerController1) private val section1NoHeader = buildSection(1, section1Bucket, null) private val section2 = buildSection(2, section2Bucket, headerController2) + private val section3 = buildSection(3, section2Bucket, headerController2) private val fakeViewBarn = FakeViewBarn() @@ -74,6 +75,37 @@ class NodeSpecBuilderTest : SysuiTestCase() { specBuilder = NodeSpecBuilder(viewBarn) } + @Test + fun testMultipleSectionsWithSameController() { + checkOutput( + listOf( + notif(0, section0), + notif(1, section2), + notif(2, section3) + ), + tree( + node(headerController0), + notifNode(0), + node(headerController2), + notifNode(1), + notifNode(2) + ) + ) + } + + @Test(expected = RuntimeException::class) + fun testMultipleSectionsWithSameControllerNonConsecutive() { + checkOutput( + listOf( + notif(0, section0), + notif(1, section1), + notif(2, section3), + notif(3, section1) + ), + tree() + ) + } + @Test fun testSimpleMapping() { checkOutput(