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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user