diff options
| author | 2024-05-22 17:46:27 +0000 | |
|---|---|---|
| committer | 2024-05-22 17:57:19 +0000 | |
| commit | 5129b5fe7cee819811d0fd166176e54ca139cd82 (patch) | |
| tree | 865b8a087a3f92294a2a6a6c7c64ec32694523b8 /java/src | |
| parent | 25c04565081fd8643e04f88e004fc09ac1c73ff3 (diff) | |
Content description fixes for shareousel
- Remove hard-coded descriptions.
- Describe items based upon content type.
- Switch from clickable to toggleable to get accessibility state
  descriptions.
Bug: 328791503
Test: Manual testing with talkback.
Flag: android.service.chooser.chooser_payload_toggling
Change-Id: Ia5fe1b08015a1f7a9bd0a386b5318f871dde33be
Diffstat (limited to 'java/src')
2 files changed, 17 insertions, 4 deletions
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt index f33558c7..0efaa3bb 100644 --- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt +++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt @@ -58,7 +58,7 @@ fun ShareouselCard(  private fun AnimationIcon(modifier: Modifier = Modifier) {      Icon(          painterResource(id = R.drawable.ic_play_circle_filled_24px), -        "animating", +        contentDescription = null, // Video attribute described at a higher level.          tint = Color.White,          modifier = Modifier.size(20.dp).then(modifier)      ) @@ -71,7 +71,7 @@ private fun SelectionIcon(selected: Boolean, modifier: Modifier = Modifier) {          Icon(              painter = painterResource(id = R.drawable.checkbox),              tint = Color.White, -            contentDescription = "selected", +            contentDescription = null,              modifier =                  Modifier.shadow(                          elevation = 50.dp, diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt index 85ad6ab3..32aa7eee 100644 --- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt +++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt @@ -18,7 +18,6 @@ package com.android.intentresolver.contentpreview.payloadtoggle.ui.composable  import androidx.compose.foundation.Image  import androidx.compose.foundation.background  import androidx.compose.foundation.border -import androidx.compose.foundation.clickable  import androidx.compose.foundation.layout.Arrangement  import androidx.compose.foundation.layout.Box  import androidx.compose.foundation.layout.Column @@ -34,6 +33,7 @@ import androidx.compose.foundation.lazy.LazyRow  import androidx.compose.foundation.lazy.items  import androidx.compose.foundation.lazy.itemsIndexed  import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.selection.toggleable  import androidx.compose.foundation.shape.RoundedCornerShape  import androidx.compose.material3.AssistChip  import androidx.compose.material3.AssistChipDefaults @@ -49,6 +49,9 @@ import androidx.compose.ui.graphics.ColorFilter  import androidx.compose.ui.graphics.asImageBitmap  import androidx.compose.ui.layout.ContentScale  import androidx.compose.ui.res.dimensionResource +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.lifecycle.compose.collectAsStateWithLifecycle  import com.android.intentresolver.R @@ -113,6 +116,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) {          viewModel.contentType.collectAsStateWithLifecycle(initialValue = ContentType.Image)      val borderColor = MaterialTheme.colorScheme.primary      val scope = rememberCoroutineScope() +    val contentDescription = +        when (contentType) { +            ContentType.Image -> stringResource(R.string.selectable_image) +            ContentType.Video -> stringResource(R.string.selectable_video) +            else -> stringResource(R.string.selectable_item) +        }      ShareouselCard(          image = {              // TODO: max ratio is actually equal to the viewport ratio @@ -140,8 +149,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) {                          shape = RoundedCornerShape(size = 12.dp),                      )                  } +                .semantics { this.contentDescription = contentDescription }                  .clip(RoundedCornerShape(size = 12.dp)) -                .clickable { scope.launch { viewModel.setSelected(!selected) } }, +                .toggleable( +                    value = selected, +                    onValueChange = { scope.launch { viewModel.setSelected(it) } }, +                )      )  }  |