From c7c752cabbcb407bc1b601aa6b4c59cc9c44713b Mon Sep 17 00:00:00 2001 From: Mihai Adrian <48995920+mcarare@users.noreply.github.com> Date: Tue, 24 Sep 2019 20:46:34 +0300 Subject: [PATCH] For #5356 Improves private browsing "common myths" link accessibility (#5479) Added separate TextView for link text Used UnderlineSpan to show text as link Split string private_browsing_placeholder, one for each TextView Set clickListener on TextView so it can be accessed via Talkback --- .../PrivateBrowsingDescriptionViewHolder.kt | 30 ++++++++----------- .../layout/private_browsing_description.xml | 17 +++++++++-- app/src/main/res/values/strings.xml | 8 +++-- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/PrivateBrowsingDescriptionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/PrivateBrowsingDescriptionViewHolder.kt index 1579475e5..461570761 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/PrivateBrowsingDescriptionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/PrivateBrowsingDescriptionViewHolder.kt @@ -6,8 +6,7 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders import android.text.SpannableString import android.text.method.LinkMovementMethod -import android.text.style.ClickableSpan -import android.text.style.ForegroundColorSpan +import android.text.style.UnderlineSpan import android.view.View import androidx.recyclerview.widget.RecyclerView import io.reactivex.Observer @@ -24,26 +23,21 @@ class PrivateBrowsingDescriptionViewHolder( init { val resources = view.context.resources - // Format the description text to include a hyperlink val appName = resources.getString(R.string.app_name) - view.private_session_description.text = resources.getString(R.string.private_browsing_placeholder, appName) - val descriptionText = String - .format(view.private_session_description.text.toString(), System.getProperty("line.separator")) - val linkStartIndex = descriptionText.indexOf("\n\n") + 2 - val linkAction = object : ClickableSpan() { - override fun onClick(widget: View?) { + view.private_session_description.text = resources.getString( + R.string.private_browsing_placeholder_description, appName + ) + val commonMythsText = view.private_session_common_myths.text.toString() + val textWithLink = SpannableString(commonMythsText).apply { + setSpan(UnderlineSpan(), 0, commonMythsText.length, 0) + } + with(view.private_session_common_myths) { + movementMethod = LinkMovementMethod.getInstance() + text = textWithLink + setOnClickListener { actionEmitter.onNext(TabAction.PrivateBrowsingLearnMore) } } - val textWithLink = SpannableString(descriptionText).apply { - setSpan(linkAction, linkStartIndex, descriptionText.length, 0) - - val colorSpan = ForegroundColorSpan(view.private_session_description.currentTextColor) - setSpan(colorSpan, linkStartIndex, descriptionText.length, 0) - } - - view.private_session_description.movementMethod = LinkMovementMethod.getInstance() - view.private_session_description.text = textWithLink } companion object { diff --git a/app/src/main/res/layout/private_browsing_description.xml b/app/src/main/res/layout/private_browsing_description.xml index 8eab61edb..b4d64fbc9 100644 --- a/app/src/main/res/layout/private_browsing_description.xml +++ b/app/src/main/res/layout/private_browsing_description.xml @@ -7,16 +7,29 @@ android:id="@+id/private_session_description_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="16dp" + android:layout_margin="12dp" + android:importantForAccessibility="no" android:orientation="vertical"> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 05a50b51b..7a4e50499 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,10 +24,12 @@ You’re in a private session - + %1$s clears your search and browsing history when you quit the app or close all private tabs. While this doesn’t make you anonymous to websites or your internet service provider, it makes it - easier to keep what you do online private from anyone else who uses this device.\n\nCommon myths about private - browsing + easier to keep what you do online private from anyone else who uses this device. + + + Common myths about private browsing Delete session