Bug 1870335 - Merge content descriptions in the Add-ons details screen.

fenix/124.1.0
Arturo Mejia 5 months ago committed by mergify[bot]
parent 3470a4e951
commit 2b48fa54b3

@ -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"
}
}

@ -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" />
<View
@ -83,6 +84,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/version_label"
app:layout_constraintTop_toBottomOf="@+id/author_divider"
android:importantForAccessibility="no"
tools:text="1.2.3" />
<View
@ -116,6 +118,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/last_updated_label"
app:layout_constraintTop_toBottomOf="@+id/version_divider"
android:importantForAccessibility="no"
tools:text="Oct 16, 2019" />
<View
@ -178,6 +181,7 @@
app:layout_constraintHorizontal_bias="1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@+id/rating_label"
android:importantForAccessibility="no"
app:layout_constraintTop_toTopOf="parent" />
<TextView

@ -8,6 +8,7 @@ import android.net.Uri
import android.text.method.LinkMovementMethod
import android.view.LayoutInflater
import android.view.View
import android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO
import androidx.core.view.isVisible
import io.mockk.mockk
import io.mockk.verify
@ -66,9 +67,14 @@ class AddonDetailsBindingDelegateTest {
),
),
)
assertEquals("4.30/5", binding.ratingView.contentDescription)
assertEquals(4.5f, binding.ratingView.rating)
assertEquals("100", binding.reviewCount.text)
val ratingContentDescription = testContext.getString(R.string.mozac_feature_addons_rating_content_description)
val formattedRatting = String.format(ratingContentDescription, 4.3f)
val expectedContentDescription = binding.ratingLabel.text.toString() + " " + formattedRatting
assertEquals(expectedContentDescription, binding.ratingLabel.contentDescription)
assertEquals(IMPORTANT_FOR_ACCESSIBILITY_NO, binding.ratingView.importantForAccessibility)
}
@Test
@ -104,6 +110,9 @@ class AddonDetailsBindingDelegateTest {
detailsBindingDelegate.bind(baseAddon)
assertEquals("Nov 23, 2020", binding.lastUpdatedText.text)
val expectedContentDescription = binding.lastUpdatedLabel.text.toString() + " " + "Nov 23, 2020"
assertEquals(expectedContentDescription, binding.lastUpdatedLabel.contentDescription)
assertEquals(IMPORTANT_FOR_ACCESSIBILITY_NO, binding.lastUpdatedText.importantForAccessibility)
}
@Test
@ -130,6 +139,9 @@ class AddonDetailsBindingDelegateTest {
assertEquals("2.0.0", binding.versionText.text)
binding.versionText.performLongClick()
verify { interactor.showUpdaterDialog(addon2) }
val expectedContentDescription = binding.versionLabel.text.toString() + " 2.0.0"
assertEquals(expectedContentDescription, binding.versionLabel.contentDescription)
assertEquals(IMPORTANT_FOR_ACCESSIBILITY_NO, binding.versionText.importantForAccessibility)
}
@Test
@ -140,6 +152,9 @@ class AddonDetailsBindingDelegateTest {
assertEquals("Sarah Jane", binding.authorText.text)
assertNotEquals(testContext.getColorFromAttr(R.attr.textAccent), binding.authorText.currentTextColor)
val expectedContentDescription = binding.authorLabel.text.toString() + " Sarah Jane"
assertEquals(expectedContentDescription, binding.authorLabel.contentDescription)
assertEquals(IMPORTANT_FOR_ACCESSIBILITY_NO, binding.authorText.importantForAccessibility)
}
@Test

Loading…
Cancel
Save