Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88861bb4 authored by Andrew Sapperstein's avatar Andrew Sapperstein
Browse files

Announce device name in the add/remove group button content descriptions

Improves accessibility by using the specific device name we're adding
rather than all buttons using the same generic text.

Bug: 421058541
Fixes: 421058541
Test: atest MediaOutputAdapterTest
Test: atest OutputSwitcherTest
Flag: EXEMPT bugfix
Change-Id: Iea9e3c2241279a2f6c51e105b9c29f9cfed9468f
parent b208db85
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.graphics.drawable.Icon
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper.RunWithLooper
import android.text.BidiFormatter
import android.view.View.GONE
import android.view.View.VISIBLE
import android.widget.LinearLayout
@@ -310,7 +311,8 @@ class MediaOutputAdapterTest : SysuiTestCase() {
            assertThat(mDivider.visibility).isEqualTo(VISIBLE)
            assertThat(mGroupButton.visibility).isEqualTo(VISIBLE)
            assertThat(mGroupButton.contentDescription)
                .isEqualTo(mContext.getString(R.string.accessibility_add_device_to_group))
                .isEqualTo(mContext.getString(R.string.accessibility_add_device_to_group_with_name,
                         BidiFormatter.getInstance().unicodeWrap(TEST_DEVICE_NAME_2)))
            assertThat(mTitleText.visibility).isEqualTo(VISIBLE)
            assertThat(mTitleText.text.toString()).isEqualTo(TEST_DEVICE_NAME_2)

@@ -332,7 +334,9 @@ class MediaOutputAdapterTest : SysuiTestCase() {
        createAndBindDeviceViewHolder(position = 2).apply {
            assertThat(mGroupButton.visibility).isEqualTo(VISIBLE)
            assertThat(mGroupButton.contentDescription)
                .isEqualTo(mContext.getString(R.string.accessibility_remove_device_from_group))
                .isEqualTo(mContext.getString(
                        R.string.accessibility_remove_device_from_group_with_name,
                        BidiFormatter.getInstance().unicodeWrap(TEST_DEVICE_NAME_2)))
            mGroupButton.performClick()
        }

+6 −0
Original line number Diff line number Diff line
@@ -616,6 +616,12 @@
    <!-- Content description of the button to remove a device from a group. [CHAR LIMIT=NONE] -->
    <string name="accessibility_remove_device_from_group">Remove device from group.</string>

    <!-- Content description of the button to add a device to a group. [CHAR LIMIT=NONE] -->
    <string name="accessibility_add_device_to_group_with_name">Add <xliff:g id="device_name">%s</xliff:g> to group.</string>

    <!-- Content description of the button to remove a device from a group. [CHAR LIMIT=NONE] -->
    <string name="accessibility_remove_device_from_group_with_name">Remove <xliff:g id="device_name">%s</xliff:g> from group.</string>

    <!-- Content description of the button to open the application . [CHAR LIMIT=NONE] -->
    <string name="accessibility_open_application">Open application.</string>

+14 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.res.ColorStateList
import android.graphics.Typeface
import android.graphics.drawable.AnimatedVectorDrawable
import android.graphics.drawable.Drawable
import android.text.BidiFormatter
import android.util.Log
import android.view.LayoutInflater
import android.view.View
@@ -596,14 +597,20 @@ class MediaOutputAdapter(controller: MediaSwitchingController) :
            groupStatus: GroupStatus,
            colorTheme: ColorTheme,
        ) {
            mGroupButton.contentDescription =
                mContext.getString(
                    if (groupStatus.selected) R.string.accessibility_remove_device_from_group
                    else R.string.accessibility_add_device_to_group
                )
            val resId =
                if (groupStatus.selected) {
                    R.string.accessibility_remove_device_from_group_with_name
                } else {
                    R.string.accessibility_add_device_to_group_with_name
                }
            mGroupButton.contentDescription = mContext.getString(
                    resId, BidiFormatter.getInstance().unicodeWrap(device.name))
            mGroupButton.setImageResource(
                if (groupStatus.selected) R.drawable.ic_check_circle_filled
                else R.drawable.ic_add_circle_rounded
                if (groupStatus.selected) {
                    R.drawable.ic_check_circle_filled
                } else {
                    R.drawable.ic_add_circle_rounded
                }
            )
            mGroupButton.setOnClickListener {
                onGroupActionTriggered(!groupStatus.selected, device)