Bug 1804714 - Expose <summary> in Android correctly. r=Jamie,geckoview-reviewers,tcampbell
Differential Revision: https://phabricator.services.mozilla.com/D322450
This commit is contained in:
committed by
eisaacson@mozilla.com
parent
d44c96a3f9
commit
e03fc8bd6b
@@ -274,6 +274,7 @@ uint16_t TraversalRule::DefaultMatch(Accessible* aAccessible) {
|
||||
case roles::OPTION:
|
||||
case roles::SWITCH:
|
||||
case roles::MATHML_MATH:
|
||||
case roles::SUMMARY:
|
||||
// Ignore the subtree, if there is one. So that we don't land on
|
||||
// the same content that was already presented by its parent.
|
||||
return nsIAccessibleTraversalRule::FILTER_MATCH |
|
||||
|
||||
@@ -1526,7 +1526,7 @@ ROLE(SUMMARY,
|
||||
@"AXSummary",
|
||||
ROLE_SYSTEM_PUSHBUTTON,
|
||||
ROLE_SYSTEM_PUSHBUTTON,
|
||||
java::SessionAccessibility::CLASSNAME_BUTTON,
|
||||
java::SessionAccessibility::CLASSNAME_VIEW,
|
||||
IsAccessibilityElementRule::Yes,
|
||||
UIA_ButtonControlTypeId,
|
||||
eNameFromSubtreeRule)
|
||||
|
||||
@@ -64,6 +64,7 @@ figure = figure
|
||||
definitionlist = definition list
|
||||
term = term
|
||||
definition = definition
|
||||
summary = summary
|
||||
|
||||
mathmltable = math table
|
||||
mathmlcell = cell
|
||||
|
||||
+49
@@ -828,6 +828,55 @@ class AccessibilityTest : BaseSessionTest() {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSummary() {
|
||||
var nodeId = AccessibilityNodeProvider.HOST_VIEW_ID
|
||||
mainSession.loadUri("data:text/html;charset=utf-8,<details><summary>Question</summary><p>Answer</p></details>")
|
||||
waitForInitialFocus(true)
|
||||
|
||||
sessionRule.waitUntilCalled(
|
||||
object : EventDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onAccessibilityFocused(event: AccessibilityEvent) {
|
||||
nodeId = getSourceId(event)
|
||||
val node = createNodeInfo(nodeId)
|
||||
assertThat("Accessibility focus on summary", node.text.toString(), equalTo("Question"))
|
||||
assertThat(
|
||||
"Summary has role description",
|
||||
node.extras.getCharSequence("AccessibilityNodeInfo.roleDescription")!!.toString(),
|
||||
equalTo("summary"),
|
||||
)
|
||||
assertThat(
|
||||
"summary is expandable",
|
||||
node.actionList,
|
||||
hasItem(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND),
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
provider.performAction(nodeId, AccessibilityNodeInfo.ACTION_EXPAND, null)
|
||||
sessionRule.waitUntilCalled(
|
||||
object : EventDelegate {
|
||||
@AssertCalled(count = 1)
|
||||
override fun onClicked(event: AccessibilityEvent) {
|
||||
assertThat("Clicked event is from same node", getSourceId(event), equalTo(nodeId))
|
||||
val node = createNodeInfo(nodeId)
|
||||
assertThat(
|
||||
"summary is collapsable",
|
||||
node.actionList,
|
||||
hasItem(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE),
|
||||
)
|
||||
assertThat(
|
||||
"node is not expandable",
|
||||
node.actionList,
|
||||
not(hasItem(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND)),
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMoveByCharacter() {
|
||||
var nodeId = AccessibilityNodeProvider.HOST_VIEW_ID
|
||||
|
||||
Reference in New Issue
Block a user