From 2b48fa54b30765bbf46301f3553821bf05654151 Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Fri, 5 Jan 2024 17:56:03 -0500 Subject: [PATCH] Bug 1870335 - Merge content descriptions in the Add-ons details screen. --- .../fenix/addons/AddonDetailsBindingDelegate.kt | 15 +++++++++++++-- .../main/res/layout/fragment_add_on_details.xml | 4 ++++ .../addons/AddonDetailsBindingDelegateTest.kt | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsBindingDelegate.kt b/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsBindingDelegate.kt index 8ad012fe8..3ff2f85f6 100644 --- a/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsBindingDelegate.kt +++ b/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsBindingDelegate.kt @@ -10,6 +10,8 @@ import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan import android.text.style.URLSpan import android.view.View +import android.widget.TextView +import androidx.annotation.VisibleForTesting import androidx.core.net.toUri import androidx.core.text.HtmlCompat import androidx.core.text.getSpans @@ -62,7 +64,6 @@ class AddonDetailsBindingDelegate( addon.rating?.let { rating -> val resources = binding.root.resources val ratingContentDescription = resources.getString(R.string.mozac_feature_addons_rating_content_description) - binding.ratingView.contentDescription = String.format(ratingContentDescription, rating.average) binding.ratingView.rating = rating.average binding.reviewCount.text = numberFormatter.format(rating.reviews) @@ -73,6 +74,7 @@ class AddonDetailsBindingDelegate( interactor.openWebsite(addon.ratingUrl.toUri()) } } + binding.ratingLabel.joinContextDescriptions(String.format(ratingContentDescription, rating.average)) } } @@ -96,7 +98,9 @@ class AddonDetailsBindingDelegate( return } - binding.lastUpdatedText.text = dateFormatter.format(addon.updatedAtDate) + val formattedDate = dateFormatter.format(addon.updatedAtDate) + binding.lastUpdatedText.text = formattedDate + binding.lastUpdatedLabel.joinContextDescriptions(formattedDate) } private fun bindVersion(addon: Addon) { @@ -114,6 +118,7 @@ class AddonDetailsBindingDelegate( } else { binding.versionText.setOnLongClickListener(null) } + binding.versionLabel.joinContextDescriptions(version) } private fun bindAuthor(addon: Addon) { @@ -133,6 +138,7 @@ class AddonDetailsBindingDelegate( interactor.openWebsite(author.url.toUri()) } } + binding.authorLabel.joinContextDescriptions(author.name) } private fun bindDetails(addon: Addon) { @@ -179,4 +185,9 @@ class AddonDetailsBindingDelegate( interactor.openWebsite(addon.detailUrl.toUri()) } } + + @VisibleForTesting + internal fun TextView.joinContextDescriptions(text: String) { + this.contentDescription = "${this.text} $text" + } } diff --git a/app/src/main/res/layout/fragment_add_on_details.xml b/app/src/main/res/layout/fragment_add_on_details.xml index 457ae4689..61bff2fcd 100644 --- a/app/src/main/res/layout/fragment_add_on_details.xml +++ b/app/src/main/res/layout/fragment_add_on_details.xml @@ -49,6 +49,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/author_label" app:layout_constraintTop_toBottomOf="@+id/details" + android:importantForAccessibility="no" tools:text="@tools:sample/full_names" />