summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-24 17:10:39 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-24 17:10:39 -0800
commitaa36a2386976bc20729acc2febe5475c53522cdb (patch)
treefcfb014298b4dfb987b49cf598718520cda41985
parent3834835c0078582c73795b8cf7a72d7d0458e275 (diff)
parente6a9f21e66371f6234f916345233a8f65871e80e (diff)
Merge "Update the text preview UI copy button content description" into main
-rw-r--r--java/res/values/strings.xml7
-rw-r--r--java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt29
-rw-r--r--java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java2
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt6
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModelTest.kt3
6 files changed, 36 insertions, 13 deletions
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 52b27304..c9ee9d80 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -353,4 +353,11 @@
<!-- Accessibility announcement for the all-applications group in the list of targets.
[CHAR LIMIT=NONE] -->
<string name="all_apps_group_a11y_title">App list</string>
+
+ <!-- Content description for an action chip button in the content preview UI when a text is
+ shared. The button is used to copy the text into the clipboard. [CHAR_LIMIT=NONE] -->
+ <string name="copy_text">Copy text</string>
+ <!-- Content description for an action chip button in the content preview UI when a link is
+ shared. The button is used to copy the text into the clipboard. [CHAR_LIMIT=NONE] -->
+ <string name="copy_link">Copy link</string>
</resources>
diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt
index 059ee083..9c4122bb 100644
--- a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt
+++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt
@@ -38,4 +38,6 @@ interface HeadlineGenerator {
fun getFilesHeadline(count: Int): String
fun getNotItemsSelectedHeadline(): String
+
+ fun getCopyButtonContentDescription(sharedText: CharSequence): String
}
diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt
index 822d3097..ca01875b 100644
--- a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt
+++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt
@@ -33,11 +33,8 @@ private const val PLURALS_COUNT = "count"
* HeadlineGenerator generates the text to show at the top of the sharesheet as a brief description
* of the content being shared.
*/
-class HeadlineGeneratorImpl
-@Inject
-constructor(
- @ApplicationContext private val context: Context,
-) : HeadlineGenerator {
+class HeadlineGeneratorImpl @Inject constructor(@ApplicationContext private val context: Context) :
+ HeadlineGenerator {
override fun getTextHeadline(text: CharSequence): String {
return context.getString(
getTemplateResource(text, R.string.sharing_link, R.string.sharing_text)
@@ -53,9 +50,9 @@ constructor(
getTemplateResource(
text,
R.string.sharing_images_with_link,
- R.string.sharing_images_with_text
+ R.string.sharing_images_with_text,
),
- count
+ count,
)
}
@@ -64,9 +61,9 @@ constructor(
getTemplateResource(
text,
R.string.sharing_videos_with_link,
- R.string.sharing_videos_with_text
+ R.string.sharing_videos_with_text,
),
- count
+ count,
)
}
@@ -75,9 +72,9 @@ constructor(
getTemplateResource(
text,
R.string.sharing_files_with_link,
- R.string.sharing_files_with_text
+ R.string.sharing_files_with_text,
),
- count
+ count,
)
}
@@ -96,11 +93,17 @@ constructor(
override fun getNotItemsSelectedHeadline(): String =
context.getString(R.string.select_items_to_share)
+ override fun getCopyButtonContentDescription(sharedText: CharSequence): String {
+ return context.getString(
+ getTemplateResource(sharedText, R.string.copy_link, R.string.copy_text)
+ )
+ }
+
private fun getPluralString(@StringRes templateResource: Int, count: Int): String {
return PluralsMessageFormatter.format(
context.resources,
mapOf(PLURALS_COUNT to count),
- templateResource
+ templateResource,
)
}
@@ -108,7 +111,7 @@ constructor(
private fun getTemplateResource(
text: CharSequence,
@StringRes linkResource: Int,
- @StringRes nonLinkResource: Int
+ @StringRes nonLinkResource: Int,
): Int {
return if (text.toString().isHttpUri()) linkResource else nonLinkResource
}
diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
index 45a0130d..8592e6ae 100644
--- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
@@ -142,6 +142,8 @@ class TextContentPreviewUi extends ContentPreviewUi {
View copyButton = contentPreviewLayout.findViewById(R.id.copy);
if (copyButton != null) {
if (onCopy != null) {
+ copyButton.setContentDescription(
+ mHeadlineGenerator.getCopyButtonContentDescription(mSharingText));
copyButton.setOnClickListener((v) -> onCopy.run());
ViewCompat.setAccessibilityDelegate(
copyButton,
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt
index dbc37b44..6d07d195 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt
@@ -36,6 +36,12 @@ class HeadlineGeneratorImplTest {
}
@Test
+ fun testCopyButtonContentDescription() {
+ assertThat(generator.getCopyButtonContentDescription(str)).isEqualTo("Copy text")
+ assertThat(generator.getCopyButtonContentDescription(url)).isEqualTo("Copy link")
+ }
+
+ @Test
fun testImagesWIthTextHeadline() {
assertThat(generator.getImagesWithTextHeadline(str, 1)).isEqualTo("Sharing image with text")
assertThat(generator.getImagesWithTextHeadline(url, 1)).isEqualTo("Sharing image with link")
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModelTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModelTest.kt
index 6dd96040..c1be5162 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModelTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModelTest.kt
@@ -363,6 +363,9 @@ class ShareouselViewModelTest {
override fun getFilesHeadline(count: Int): String = "FILES: $count"
override fun getNotItemsSelectedHeadline() = "Select items to share"
+
+ override fun getCopyButtonContentDescription(sharedText: CharSequence): String =
+ "Copy"
}
// instantiate the view model, and then runCurrent() so that it is fully hydrated before
// starting the test