From 8d86871d01acc9e4ed58d001dd040ab9a9b965ea Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Tue, 6 Dec 2022 18:25:30 +0000 Subject: [PATCH] [Chipbar] Don't add null icon descriptions to the main description. Fixes: 260951134 Test: verify active unlock chipbar doesn't contain "null" in its content description Test: atest ChipbarCoordinatorTest Change-Id: I2de3de5cd9146825e9ec706a7f1d7a6b1bacc737 --- .../chipbar/ChipbarCoordinator.kt | 13 +++++---- .../chipbar/ChipbarCoordinatorTest.kt | 29 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt index 3b8b1e3a5933f..4d91e35856dcd 100644 --- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt @@ -156,11 +156,14 @@ open class ChipbarCoordinator @Inject constructor( } // ---- Overall accessibility ---- - currentView.requireViewById( - R.id.chipbar_inner - ).contentDescription = - "${newInfo.startIcon.icon.contentDescription.loadContentDescription(context)} " + - "${newInfo.text.loadText(context)}" + val iconDesc = newInfo.startIcon.icon.contentDescription + val loadedIconDesc = if (iconDesc != null) { + "${iconDesc.loadContentDescription(context)} " + } else { + "" + } + currentView.requireViewById(R.id.chipbar_inner).contentDescription = + "$loadedIconDesc${newInfo.text.loadText(context)}" // ---- Haptics ---- newInfo.vibrationEffect?.let { diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt index 5343ad8340a79..7014f93fba4a1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt @@ -109,6 +109,35 @@ class ChipbarCoordinatorTest : SysuiTestCase() { underTest.start() } + @Test + fun displayView_contentDescription_iconHasDescription() { + underTest.displayView( + createChipbarInfo( + Icon.Resource(R.drawable.ic_cake, ContentDescription.Loaded("loadedCD")), + Text.Loaded("text"), + endItem = null, + ) + ) + + val contentDescView = getChipbarView().requireViewById(R.id.chipbar_inner) + assertThat(contentDescView.contentDescription.toString()).contains("loadedCD") + assertThat(contentDescView.contentDescription.toString()).contains("text") + } + + @Test + fun displayView_contentDescription_iconHasNoDescription() { + underTest.displayView( + createChipbarInfo( + Icon.Resource(R.drawable.ic_cake, contentDescription = null), + Text.Loaded("text"), + endItem = null, + ) + ) + + val contentDescView = getChipbarView().requireViewById(R.id.chipbar_inner) + assertThat(contentDescView.contentDescription.toString()).isEqualTo("text") + } + @Test fun displayView_loadedIcon_correctlyRendered() { val drawable = context.getDrawable(R.drawable.ic_celebration)!!