From 1356b3e426f76fec78e94de6265b796f920c4ff4 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Fri, 5 Jun 2020 14:28:11 -0500 Subject: [PATCH] For 11271 - Provide useful tab counter message for accessibility --- .../fenix/components/toolbar/TabCounter.kt | 12 ++++++++++++ .../toolbar/TabCounterToolbarButton.kt | 16 ---------------- app/src/main/res/values/strings.xml | 4 ++++ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounter.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounter.kt index ba03ae68b..564dbbdea 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounter.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounter.kt @@ -34,11 +34,22 @@ open class TabCounter @JvmOverloads constructor( TypedValue.COMPLEX_UNIT_DIP, TWO_DIGIT_PADDING, context.resources.displayMetrics ).toInt() counter_text.setPadding(0, shiftThreeDp, shiftThreeDp, 0) + updateContentDescription(0) animationSet = createAnimatorSet() } + private fun updateContentDescription(count: Int) { + counter_root.contentDescription = if (count == 1) { + context?.getString(R.string.open_tab_tray_single) + } else { + context?.getString(R.string.open_tab_tray_plural, count.toString()) + } + } + fun setCountWithAnimation(count: Int) { + updateContentDescription(count) + // Don't animate from initial state. if (this.count == 0) { setCount(count) @@ -69,6 +80,7 @@ open class TabCounter @JvmOverloads constructor( } fun setCount(count: Int) { + updateContentDescription(count) adjustTextSize(count) counter_text.text = formatForDisplay(count) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt index 6cba9e26f..1889a1e27 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt @@ -4,14 +4,12 @@ package org.mozilla.fenix.components.toolbar -import android.content.Context import android.util.TypedValue import android.view.View import android.view.ViewGroup import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager import mozilla.components.concept.toolbar.Toolbar -import org.mozilla.fenix.R import org.mozilla.fenix.ext.sessionsOfType import java.lang.ref.WeakReference @@ -34,12 +32,6 @@ class TabCounterToolbarButton( showTabs.invoke() } - val count = sessionManager.sessions.count { - it.private == isPrivate - } - - contentDescription = getDescriptionForTabCount(context, count) - addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener { override fun onViewAttachedToWindow(v: View?) { setCount(sessionManager.sessionsOfType(private = isPrivate).count()) @@ -66,18 +58,10 @@ class TabCounterToolbarButton( val count = sessionManager.sessionsOfType(private = isPrivate).count() reference.get()?.let { - it.contentDescription = getDescriptionForTabCount(it.context, count) it.setCountWithAnimation(count) } } - private fun getDescriptionForTabCount(context: Context?, count: Int): String? { - return if (count > 1) context?.getString( - R.string.tab_counter_content_description_multi_tab, - count - ) else context?.getString(R.string.tab_counter_content_description_one_tab) - } - private val sessionManagerObserver = object : SessionManager.Observer { override fun onSessionAdded(session: Session) { updateCount() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92d15ef78..2b86a174b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -21,6 +21,10 @@ Your open tabs will be shown here. Your private tabs will be shown here. + + 1 open tab. Tap to switch tabs. + + %1$s open tabs. Tap to switch tabs. %1$s is produced by Mozilla.