Do not allow focus on invisible buttons

Fixes: 282157959
Test: atest MediaControlPanelTest
Test: manual with Talkback
Change-Id: I0c6d1d5e7e071f9ff6825c8eabe25ecba73271f3
This commit is contained in:
Beth Thibodeau
2023-05-12 14:42:12 -05:00
parent a24961f087
commit 0dd009333a
2 changed files with 8 additions and 0 deletions

View File

@@ -1235,6 +1235,8 @@ public class MediaControlPanel {
if ((buttonId == R.id.actionPrev && semanticActions.getReservePrev())
|| (buttonId == R.id.actionNext && semanticActions.getReserveNext())) {
notVisibleValue = ConstraintSet.INVISIBLE;
mMediaViewHolder.getAction(buttonId).setFocusable(visible);
mMediaViewHolder.getAction(buttonId).setClickable(visible);
} else {
notVisibleValue = ConstraintSet.GONE;
}

View File

@@ -530,6 +530,8 @@ public class MediaControlPanelTest : SysuiTestCase() {
verify(collapsedSet).setVisibility(R.id.actionPlayPause, ConstraintSet.VISIBLE)
assertThat(actionNext.isEnabled()).isTrue()
assertThat(actionNext.isFocusable()).isTrue()
assertThat(actionNext.isClickable()).isTrue()
assertThat(actionNext.contentDescription).isEqualTo("next")
verify(collapsedSet).setVisibility(R.id.actionNext, ConstraintSet.VISIBLE)
@@ -576,6 +578,8 @@ public class MediaControlPanelTest : SysuiTestCase() {
assertThat(actionPrev.isEnabled()).isFalse()
assertThat(actionPrev.drawable).isNull()
assertThat(actionPrev.isFocusable()).isFalse()
assertThat(actionPrev.isClickable()).isFalse()
verify(expandedSet).setVisibility(R.id.actionPrev, ConstraintSet.INVISIBLE)
assertThat(actionNext.isEnabled()).isFalse()
@@ -610,6 +614,8 @@ public class MediaControlPanelTest : SysuiTestCase() {
assertThat(actionNext.isEnabled()).isFalse()
assertThat(actionNext.drawable).isNull()
assertThat(actionNext.isFocusable()).isFalse()
assertThat(actionNext.isClickable()).isFalse()
verify(expandedSet).setVisibility(R.id.actionNext, ConstraintSet.INVISIBLE)
}