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

Commit 2fd620d7 authored by Candice Lo's avatar Candice Lo
Browse files

Fix accessibility labels for icon buttons

The icons and frames could get accessibility focus at the same
time previously since we set an onClickListener on the icon though the
icons are not focusable in layout specification. Therefore, we move the
onClickListener to the frames to keep the icons non-focusable.

Bug: 269218388
Test: Manually - add a video and a screenshot to bug
Test: atest SeekBarWithIconButtonsViewTest
Test: atest FontScalingDialogTest
Change-Id: I4ea0fd1efb4f8e84200e211519c5a46309cfb1c0
parent 5b5420b9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout {

        mSeekbar.setOnSeekBarChangeListener(mSeekBarListener);

        mIconStart.setOnClickListener((view) -> {
        mIconStartFrame.setOnClickListener((view) -> {
            final int progress = mSeekbar.getProgress();
            if (progress > 0) {
                mSeekbar.setProgress(progress - 1);
@@ -118,7 +118,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout {
            }
        });

        mIconEnd.setOnClickListener((view) -> {
        mIconEndFrame.setOnClickListener((view) -> {
            final int progress = mSeekbar.getProgress();
            if (progress < mSeekbar.getMax()) {
                mSeekbar.setProgress(progress + 1);
+5 −5
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ import android.os.Handler
import android.provider.Settings
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.widget.ImageView
import android.view.ViewGroup
import android.widget.SeekBar
import androidx.test.filters.SmallTest
import com.android.systemui.R
@@ -68,14 +68,14 @@ class FontScalingDialogTest : SysuiTestCase() {
    fun progressIsZero_clickIconEnd_seekBarProgressIncreaseOne_fontSizeScaled() {
        fontScalingDialog.show()

        val iconEnd: ImageView = fontScalingDialog.findViewById(R.id.icon_end)!!
        val iconEndFrame: ViewGroup = fontScalingDialog.findViewById(R.id.icon_end_frame)!!
        val seekBarWithIconButtonsView: SeekBarWithIconButtonsView =
            fontScalingDialog.findViewById(R.id.font_scaling_slider)!!
        val seekBar: SeekBar = fontScalingDialog.findViewById(R.id.seekbar)!!

        seekBarWithIconButtonsView.setProgress(0)

        iconEnd.performClick()
        iconEndFrame.performClick()

        val currentScale = systemSettings.getFloat(Settings.System.FONT_SCALE, /* def = */ 1.0f)
        assertThat(seekBar.getProgress()).isEqualTo(1)
@@ -88,14 +88,14 @@ class FontScalingDialogTest : SysuiTestCase() {
    fun progressIsMax_clickIconStart_seekBarProgressDecreaseOne_fontSizeScaled() {
        fontScalingDialog.show()

        val iconStart: ImageView = fontScalingDialog.findViewById(R.id.icon_start)!!
        val iconStartFrame: ViewGroup = fontScalingDialog.findViewById(R.id.icon_start_frame)!!
        val seekBarWithIconButtonsView: SeekBarWithIconButtonsView =
            fontScalingDialog.findViewById(R.id.font_scaling_slider)!!
        val seekBar: SeekBar = fontScalingDialog.findViewById(R.id.seekbar)!!

        seekBarWithIconButtonsView.setProgress(fontSizeValueArray.size - 1)

        iconStart.performClick()
        iconStartFrame.performClick()

        val currentScale = systemSettings.getFloat(Settings.System.FONT_SCALE, /* def = */ 1.0f)
        assertThat(seekBar.getProgress()).isEqualTo(fontSizeValueArray.size - 2)
+15 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;

import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SeekBar;

@@ -42,6 +43,8 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {

    private ImageView mIconStart;
    private ImageView mIconEnd;
    private ViewGroup mIconStartFrame;
    private ViewGroup mIconEndFrame;
    private SeekBar mSeekbar;
    private SeekBarWithIconButtonsView mIconDiscreteSliderLinearLayout;

@@ -50,6 +53,8 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {
        mIconDiscreteSliderLinearLayout = new SeekBarWithIconButtonsView(mContext);
        mIconStart = mIconDiscreteSliderLinearLayout.findViewById(R.id.icon_start);
        mIconEnd = mIconDiscreteSliderLinearLayout.findViewById(R.id.icon_end);
        mIconStartFrame = mIconDiscreteSliderLinearLayout.findViewById(R.id.icon_start_frame);
        mIconEndFrame = mIconDiscreteSliderLinearLayout.findViewById(R.id.icon_end_frame);
        mSeekbar = mIconDiscreteSliderLinearLayout.findViewById(R.id.seekbar);
    }

@@ -59,6 +64,8 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {

        assertThat(mIconStart.isEnabled()).isFalse();
        assertThat(mIconEnd.isEnabled()).isTrue();
        assertThat(mIconStartFrame.isEnabled()).isFalse();
        assertThat(mIconEndFrame.isEnabled()).isTrue();
    }

    @Test
@@ -67,6 +74,8 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {

        assertThat(mIconEnd.isEnabled()).isFalse();
        assertThat(mIconStart.isEnabled()).isTrue();
        assertThat(mIconEndFrame.isEnabled()).isFalse();
        assertThat(mIconStartFrame.isEnabled()).isTrue();
    }

    @Test
@@ -77,12 +86,15 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {

        assertThat(mIconStart.isEnabled()).isTrue();
        assertThat(mIconEnd.isEnabled()).isTrue();
        assertThat(mIconStartFrame.isEnabled()).isTrue();
        assertThat(mIconEndFrame.isEnabled()).isTrue();
    }

    @Test
    public void clickIconEnd_currentProgressIsOneToMax_reachesMax() {
        mIconDiscreteSliderLinearLayout.setProgress(mSeekbar.getMax() - 1);
        mIconEnd.performClick();

        mIconEndFrame.performClick();

        assertThat(mSeekbar.getProgress()).isEqualTo(mSeekbar.getMax());
    }
@@ -90,7 +102,8 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase {
    @Test
    public void clickIconStart_currentProgressIsOne_reachesZero() {
        mIconDiscreteSliderLinearLayout.setProgress(1);
        mIconStart.performClick();

        mIconStartFrame.performClick();

        assertThat(mSeekbar.getProgress()).isEqualTo(0);
    }