Put all text content in the node's text

Instead of just putting the state, put all the text content from the
tile. That way, the relevant services will find it. "on"/"off" is not
necessary anymore for ui tests because we use `isChecked`.

Test: manual with Talkback and Select To Speak
Test: android.platform.test.scenario.sysui.quicksettings
Bug: 261994726
Change-Id: Iea47ab940ea3e0163ba196109851ea21260af017
This commit is contained in:
Fabián Kozynski
2023-04-25 14:13:41 -04:00
parent 01b56bb057
commit b5d358480a

View File

@@ -385,6 +385,11 @@ open class QSTileViewImpl @JvmOverloads constructor(
super.onInitializeAccessibilityNodeInfo(info)
// Clear selected state so it is not announce by talkback.
info.isSelected = false
info.text = if (TextUtils.isEmpty(secondaryLabel.text)) {
"${label.text}"
} else {
"${label.text}, ${secondaryLabel.text}"
}
if (lastDisabledByPolicy) {
info.addAction(
AccessibilityNodeInfo.AccessibilityAction(
@@ -402,12 +407,6 @@ open class QSTileViewImpl @JvmOverloads constructor(
accessibilityClass
}
if (Switch::class.java.name == accessibilityClass) {
val label = resources.getString(
if (tileState) R.string.switch_bar_on else R.string.switch_bar_off)
// Set the text here for tests in
// android.platform.test.scenario.sysui.quicksettings. Can be removed when
// UiObject2 has a new getStateDescription() API and tests are updated.
info.text = label
info.isChecked = tileState
info.isCheckable = true
if (isLongClickable) {