diff options
3 files changed, 31 insertions, 9 deletions
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt index b2a8b87a4495..960ebccf6c25 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.vector.ImageVector data class CardButton( val text: String, + val contentDescription: String? = null, val onClick: () -> Unit, ) diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt index c7845fa724d4..700fa487ed73 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt @@ -45,6 +45,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.framework.theme.SettingsDimension @@ -182,7 +184,11 @@ private fun Buttons(buttons: List<CardButton>, color: Color) { @Composable private fun Button(button: CardButton, color: Color) { - TextButton(onClick = button.onClick) { + TextButton( + onClick = button.onClick, + modifier = + Modifier.semantics { button.contentDescription?.let { this.contentDescription = it } } + ) { Text(text = button.text, color = color) } } diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt index beb9433cdbf0..b5b2525bffdd 100644 --- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt +++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt @@ -36,8 +36,7 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class SettingsCardTest { - @get:Rule - val composeTestRule = createComposeRule() + @get:Rule val composeTestRule = createComposeRule() private val context: Context = ApplicationProvider.getApplicationContext() @@ -76,9 +75,7 @@ class SettingsCardTest { CardModel( title = "", text = "", - buttons = listOf( - CardButton(text = TEXT) {} - ), + buttons = listOf(CardButton(text = TEXT) {}), ) ) } @@ -94,9 +91,7 @@ class SettingsCardTest { CardModel( title = "", text = "", - buttons = listOf( - CardButton(text = TEXT) { buttonClicked = true } - ), + buttons = listOf(CardButton(text = TEXT) { buttonClicked = true }), ) ) } @@ -107,6 +102,25 @@ class SettingsCardTest { } @Test + fun settingsCard_buttonHaveContentDescription() { + composeTestRule.setContent { + SettingsCard( + CardModel( + title = "", + text = "", + buttons = listOf(CardButton( + text = TEXT, + contentDescription = CONTENT_DESCRIPTION, + ) {} + ), + ) + ) + } + + composeTestRule.onNodeWithContentDescription(CONTENT_DESCRIPTION).assertIsDisplayed() + } + + @Test fun settingsCard_dismiss() { composeTestRule.setContent { var isVisible by remember { mutableStateOf(true) } @@ -130,5 +144,6 @@ class SettingsCardTest { private companion object { const val TITLE = "Title" const val TEXT = "Text" + const val CONTENT_DESCRIPTION = "content-description" } } |