Loading packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt +9 −8 Original line number Diff line number Diff line Loading @@ -586,6 +586,15 @@ constructor( ) ) ) } else { if (isLongClickable) { info.addAction( AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id, resources.getString(R.string.accessibility_long_click_tile) ) ) } } if (!TextUtils.isEmpty(accessibilityClass)) { info.className = Loading @@ -597,14 +606,6 @@ constructor( if (Switch::class.java.name == accessibilityClass) { info.isChecked = tileState info.isCheckable = true if (isLongClickable) { info.addAction( AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id, resources.getString(R.string.accessibility_long_click_tile) ) ) } } } if (position != INVALID) { Loading packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt +42 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils import android.view.ContextThemeWrapper import android.view.View import android.view.accessibility.AccessibilityNodeInfo import android.widget.Button import android.widget.TextView import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading Loading @@ -380,6 +381,47 @@ class QSTileViewImplTest : SysuiTestCase() { assertThat(tileView.stateDescription?.contains(unavailableString)).isTrue() } @Test fun testNonSwitchA11yClass_longClickActionHasCorrectLabel() { val state = QSTile.State().apply { expandedAccessibilityClassName = Button::class.java.name handlesLongClick = true } tileView.changeState(state) val info = AccessibilityNodeInfo(tileView) tileView.onInitializeAccessibilityNodeInfo(info) assertThat( info.actionList .find { it.id == AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id } ?.label ) .isEqualTo(context.getString(R.string.accessibility_long_click_tile)) } @Test fun testNonSwitchA11yClass_disabledByPolicy_noLongClickAction() { val state = QSTile.State().apply { expandedAccessibilityClassName = Button::class.java.name handlesLongClick = true disabledByPolicy = true } tileView.changeState(state) val info = AccessibilityNodeInfo(tileView) tileView.onInitializeAccessibilityNodeInfo(info) assertThat( info.actionList.find { it.id == AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id } ) .isNull() } @Test fun onStateChange_longPressEffectActive_withInvalidDuration_doesNotInitializeEffect() { val state = QSTile.State() // A state that handles longPress Loading Loading
packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt +9 −8 Original line number Diff line number Diff line Loading @@ -586,6 +586,15 @@ constructor( ) ) ) } else { if (isLongClickable) { info.addAction( AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id, resources.getString(R.string.accessibility_long_click_tile) ) ) } } if (!TextUtils.isEmpty(accessibilityClass)) { info.className = Loading @@ -597,14 +606,6 @@ constructor( if (Switch::class.java.name == accessibilityClass) { info.isChecked = tileState info.isCheckable = true if (isLongClickable) { info.addAction( AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id, resources.getString(R.string.accessibility_long_click_tile) ) ) } } } if (position != INVALID) { Loading
packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt +42 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils import android.view.ContextThemeWrapper import android.view.View import android.view.accessibility.AccessibilityNodeInfo import android.widget.Button import android.widget.TextView import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading Loading @@ -380,6 +381,47 @@ class QSTileViewImplTest : SysuiTestCase() { assertThat(tileView.stateDescription?.contains(unavailableString)).isTrue() } @Test fun testNonSwitchA11yClass_longClickActionHasCorrectLabel() { val state = QSTile.State().apply { expandedAccessibilityClassName = Button::class.java.name handlesLongClick = true } tileView.changeState(state) val info = AccessibilityNodeInfo(tileView) tileView.onInitializeAccessibilityNodeInfo(info) assertThat( info.actionList .find { it.id == AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id } ?.label ) .isEqualTo(context.getString(R.string.accessibility_long_click_tile)) } @Test fun testNonSwitchA11yClass_disabledByPolicy_noLongClickAction() { val state = QSTile.State().apply { expandedAccessibilityClassName = Button::class.java.name handlesLongClick = true disabledByPolicy = true } tileView.changeState(state) val info = AccessibilityNodeInfo(tileView) tileView.onInitializeAccessibilityNodeInfo(info) assertThat( info.actionList.find { it.id == AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id } ) .isNull() } @Test fun onStateChange_longPressEffectActive_withInvalidDuration_doesNotInitializeEffect() { val state = QSTile.State() // A state that handles longPress Loading