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

Commit 7d7cf413 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[Media TTT] Add "loading" to the content description if needed.

Fixes: 261992171
Test: `adb shell cmd statusbar media-ttt-chip-sender MyTablet
TRANSFER_TO_THIS_DEVICE_TRIGGERED` -> "loading" is in content
description
Test: `adb shell cmd statusbar media-ttt-chip-sender MyTablet
TRANSFER_TO_THIS_DEVICE_SUCCEEDED` -> "loading" is not in content
description
Test: atest ChipbarCoordinatorTest

Change-Id: I3f8392574008b908878843edcd4ef6d60d87f4d4
parent c3f30502
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2362,6 +2362,8 @@
    <string name="media_transfer_playing_different_device">Playing on <xliff:g id="deviceName" example="My Tablet">%1$s</xliff:g></string>
    <!-- Text informing the user that the media transfer has failed because something went wrong. [CHAR LIsMIT=50] -->
    <string name="media_transfer_failed">Something went wrong. Try again.</string>
    <!-- Text to indicate that a media transfer is currently in-progress, aka loading. [CHAR LIMIT=NONE] -->
    <string name="media_transfer_loading">Loading</string>

    <!-- Error message indicating that a control timed out while waiting for an update [CHAR_LIMIT=30] -->
    <string name="controls_error_timeout">Inactive, check app</string>
+8 −1
Original line number Diff line number Diff line
@@ -173,9 +173,16 @@ open class ChipbarCoordinator @Inject constructor(
        } else {
            ""
        }
        val endItemDesc =
            if (newInfo.endItem is ChipbarEndItem.Loading) {
                ". ${context.resources.getString(R.string.media_transfer_loading)}."
            } else {
                ""
            }

        val chipInnerView = currentView.getInnerView()
        chipInnerView.contentDescription = "$loadedIconDesc${newInfo.text.loadText(context)}"
        chipInnerView.contentDescription =
            "$loadedIconDesc${newInfo.text.loadText(context)}$endItemDesc"
        chipInnerView.accessibilityLiveRegion = ACCESSIBILITY_LIVE_REGION_ASSERTIVE
        maybeGetAccessibilityFocus(newInfo, currentView)

+36 −2
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
            )
        )

        val contentDescView = getChipbarView().requireViewById<ViewGroup>(R.id.chipbar_inner)
        val contentDescView = getChipbarView().getInnerView()
        assertThat(contentDescView.contentDescription.toString()).contains("loadedCD")
        assertThat(contentDescView.contentDescription.toString()).contains("text")
    }
@@ -139,10 +139,42 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
            )
        )

        val contentDescView = getChipbarView().requireViewById<ViewGroup>(R.id.chipbar_inner)
        val contentDescView = getChipbarView().getInnerView()
        assertThat(contentDescView.contentDescription.toString()).isEqualTo("text")
    }

    @Test
    fun displayView_contentDescription_endIsLoading() {
        underTest.displayView(
            createChipbarInfo(
                Icon.Resource(R.drawable.ic_cake, ContentDescription.Loaded("loadedCD")),
                Text.Loaded("text"),
                endItem = ChipbarEndItem.Loading,
            )
        )

        val contentDescView = getChipbarView().getInnerView()
        val loadingDesc = context.resources.getString(R.string.media_transfer_loading)
        assertThat(contentDescView.contentDescription.toString()).contains("text")
        assertThat(contentDescView.contentDescription.toString()).contains(loadingDesc)
    }

    @Test
    fun displayView_contentDescription_endNotLoading() {
        underTest.displayView(
            createChipbarInfo(
                Icon.Resource(R.drawable.ic_cake, ContentDescription.Loaded("loadedCD")),
                Text.Loaded("text"),
                endItem = ChipbarEndItem.Error,
            )
        )

        val contentDescView = getChipbarView().getInnerView()
        val loadingDesc = context.resources.getString(R.string.media_transfer_loading)
        assertThat(contentDescView.contentDescription.toString()).contains("text")
        assertThat(contentDescView.contentDescription.toString()).doesNotContain(loadingDesc)
    }

    @Test
    fun displayView_loadedIcon_correctlyRendered() {
        val drawable = context.getDrawable(R.drawable.ic_celebration)!!
@@ -417,6 +449,8 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
        )
    }

    private fun ViewGroup.getInnerView() = this.requireViewById<ViewGroup>(R.id.chipbar_inner)

    private fun ViewGroup.getStartIconView() = this.requireViewById<ImageView>(R.id.start_icon)

    private fun ViewGroup.getChipText(): String =