Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.vector.ImageVector data class CardButton( data class CardButton( val text: String, val text: String, val contentDescription: String? = null, val onClick: () -> Unit, val onClick: () -> Unit, ) ) Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +7 −1 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource 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 androidx.compose.ui.unit.dp import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsDimension Loading Loading @@ -182,7 +184,11 @@ private fun Buttons(buttons: List<CardButton>, color: Color) { @Composable @Composable private fun Button(button: CardButton, color: Color) { 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) Text(text = button.text, color = color) } } } } Loading packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt +23 −8 Original line number Original line Diff line number Diff line Loading @@ -36,8 +36,7 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class SettingsCardTest { class SettingsCardTest { @get:Rule @get:Rule val composeTestRule = createComposeRule() val composeTestRule = createComposeRule() private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext() Loading Loading @@ -76,9 +75,7 @@ class SettingsCardTest { CardModel( CardModel( title = "", title = "", text = "", text = "", buttons = listOf( buttons = listOf(CardButton(text = TEXT) {}), CardButton(text = TEXT) {} ), ) ) ) ) } } Loading @@ -94,9 +91,7 @@ class SettingsCardTest { CardModel( CardModel( title = "", title = "", text = "", text = "", buttons = listOf( buttons = listOf(CardButton(text = TEXT) { buttonClicked = true }), CardButton(text = TEXT) { buttonClicked = true } ), ) ) ) ) } } Loading @@ -106,6 +101,25 @@ class SettingsCardTest { assertThat(buttonClicked).isTrue() assertThat(buttonClicked).isTrue() } } @Test fun settingsCard_buttonHaveContentDescription() { composeTestRule.setContent { SettingsCard( CardModel( title = "", text = "", buttons = listOf(CardButton( text = TEXT, contentDescription = CONTENT_DESCRIPTION, ) {} ), ) ) } composeTestRule.onNodeWithContentDescription(CONTENT_DESCRIPTION).assertIsDisplayed() } @Test @Test fun settingsCard_dismiss() { fun settingsCard_dismiss() { composeTestRule.setContent { composeTestRule.setContent { Loading @@ -130,5 +144,6 @@ class SettingsCardTest { private companion object { private companion object { const val TITLE = "Title" const val TITLE = "Title" const val TEXT = "Text" const val TEXT = "Text" const val CONTENT_DESCRIPTION = "content-description" } } } } Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.vector.ImageVector data class CardButton( data class CardButton( val text: String, val text: String, val contentDescription: String? = null, val onClick: () -> Unit, val onClick: () -> Unit, ) ) Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +7 −1 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource 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 androidx.compose.ui.unit.dp import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsDimension Loading Loading @@ -182,7 +184,11 @@ private fun Buttons(buttons: List<CardButton>, color: Color) { @Composable @Composable private fun Button(button: CardButton, color: Color) { 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) Text(text = button.text, color = color) } } } } Loading
packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt +23 −8 Original line number Original line Diff line number Diff line Loading @@ -36,8 +36,7 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class SettingsCardTest { class SettingsCardTest { @get:Rule @get:Rule val composeTestRule = createComposeRule() val composeTestRule = createComposeRule() private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext() Loading Loading @@ -76,9 +75,7 @@ class SettingsCardTest { CardModel( CardModel( title = "", title = "", text = "", text = "", buttons = listOf( buttons = listOf(CardButton(text = TEXT) {}), CardButton(text = TEXT) {} ), ) ) ) ) } } Loading @@ -94,9 +91,7 @@ class SettingsCardTest { CardModel( CardModel( title = "", title = "", text = "", text = "", buttons = listOf( buttons = listOf(CardButton(text = TEXT) { buttonClicked = true }), CardButton(text = TEXT) { buttonClicked = true } ), ) ) ) ) } } Loading @@ -106,6 +101,25 @@ class SettingsCardTest { assertThat(buttonClicked).isTrue() assertThat(buttonClicked).isTrue() } } @Test fun settingsCard_buttonHaveContentDescription() { composeTestRule.setContent { SettingsCard( CardModel( title = "", text = "", buttons = listOf(CardButton( text = TEXT, contentDescription = CONTENT_DESCRIPTION, ) {} ), ) ) } composeTestRule.onNodeWithContentDescription(CONTENT_DESCRIPTION).assertIsDisplayed() } @Test @Test fun settingsCard_dismiss() { fun settingsCard_dismiss() { composeTestRule.setContent { composeTestRule.setContent { Loading @@ -130,5 +144,6 @@ class SettingsCardTest { private companion object { private companion object { const val TITLE = "Title" const val TITLE = "Title" const val TEXT = "Text" const val TEXT = "Text" const val CONTENT_DESCRIPTION = "content-description" } } } }