diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index 163990ec7d4b0..d2833796d2a59 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -608,6 +608,7 @@ class ControlsUiControllerImpl @Inject constructor ( if (items.size == 1) { spinner.setBackground(null) anchor.setOnClickListener(null) + anchor.isClickable = false return } else { spinner.background = parent.context.resources diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt index 9d5b94be3885d..6ca4dcccfca0a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt @@ -200,6 +200,56 @@ class ControlsUiControllerImplTest : SysuiTestCase() { verify(taskViewFactory).create(eq(context), eq(uiExecutor), any()) } + @Test + fun testSingleAppHeaderIsNotClickable() { + mockLayoutInflater() + val packageName = "pkg" + `when`(authorizedPanelsRepository.getAuthorizedPanels()).thenReturn(setOf(packageName)) + val panel = SelectedItem.PanelItem("App name", ComponentName(packageName, "cls")) + val serviceInfo = setUpPanel(panel) + + underTest.show(parent, {}, context) + + val captor = argumentCaptor() + + verify(controlsListingController).addCallback(capture(captor)) + + captor.value.onServicesUpdated(listOf(serviceInfo)) + FakeExecutor.exhaustExecutors(uiExecutor, bgExecutor) + + val header: View = parent.requireViewById(R.id.controls_header) + assertThat(header.isClickable).isFalse() + assertThat(header.hasOnClickListeners()).isFalse() + } + + @Test + fun testMultipleAppHeaderIsClickable() { + mockLayoutInflater() + val packageName1 = "pkg" + val panel1 = SelectedItem.PanelItem("App name 1", ComponentName(packageName1, "cls")) + val serviceInfo1 = setUpPanel(panel1) + + val packageName2 = "pkg" + val panel2 = SelectedItem.PanelItem("App name 2", ComponentName(packageName2, "cls")) + val serviceInfo2 = setUpPanel(panel2) + + `when`(authorizedPanelsRepository.getAuthorizedPanels()) + .thenReturn(setOf(packageName1, packageName2)) + + underTest.show(parent, {}, context) + + val captor = argumentCaptor() + + verify(controlsListingController).addCallback(capture(captor)) + + captor.value.onServicesUpdated(listOf(serviceInfo1, serviceInfo2)) + FakeExecutor.exhaustExecutors(uiExecutor, bgExecutor) + + val header: View = parent.requireViewById(R.id.controls_header) + assertThat(header.isClickable).isTrue() + assertThat(header.hasOnClickListeners()).isTrue() + } + @Test fun testPanelControllerStartActivityWithCorrectArguments() { mockLayoutInflater()