haikuwebkit/LayoutTests/accessibility/aria-selected-menu-items.html

64 lines
3.0 KiB
HTML
Raw Permalink Normal View History

AX: [ATK] Implement selection interface and states for elements supporting aria-selected and for menu roles https://bugs.webkit.org/show_bug.cgi?id=164865 Reviewed by Chris Fleizach. Source/WebCore: Implement AtkSelection and support ATK_STATE_SELECTABLE and ATK_STATE_SELECTED for elements supporting aria-selected and for menu-related roles. Also enable the equivalent support for the Mac because NSAccessibilitySelectedChildrenAttribute is included as supported on the same roles. In addition, fix several bugs discovered along the way: Call isSelected() on role tab, because tab supports aria-selected; not aria-checked. Correct ATK mapping of ListBoxRole and ListBoxOptionRole for combobox descendants. Always defer to WebCore for inclusion/exclusion decisions related to elements with an explicit ARIA role. Tests: accessibility/aria-combobox-hierarchy.html accessibility/aria-selected-menu-items.html accessibility/aria-selected.html * accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::selectedTabItem): (WebCore::AccessibilityNodeObject::canSetSelectedAttribute): * accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::isDescendantOfRole): * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::canHaveSelectedChildren): * accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::isSelected): (WebCore::AccessibilityRenderObject::canHaveSelectedChildren): (WebCore::AccessibilityRenderObject::selectedChildren): * accessibility/AccessibilityRenderObject.h: * accessibility/atk/AccessibilityObjectAtk.cpp: (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject): * accessibility/atk/WebKitAccessibleInterfaceSelection.cpp: (webkitAccessibleSelectionGetSelectionCount): * accessibility/atk/WebKitAccessibleWrapperAtk.cpp: (atkRole): (getInterfaceMaskFromObject): * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): LayoutTests: New tests for the added support. In addition, update the expectations for aria-combobox.html to reflect the corrected ATK mapping of ListBoxRole for combobox descendants. * accessibility/aria-combobox-expected.txt: Updated. * accessibility/aria-combobox-hierarchy.html: Added. * accessibility/aria-selected-menu-items.html: Added. * accessibility/aria-selected.html: Added. * platform/gtk/accessibility/aria-combobox-hierarchy-expected.txt: Added. * platform/gtk/accessibility/aria-selected-expected.txt: Added. * platform/gtk/accessibility/aria-selected-menu-items-expected.txt: Added. * platform/mac/accessibility/aria-combobox-hierarchy-expected.txt: Added. * platform/mac/accessibility/aria-selected-expected.txt: Added. * platform/mac/accessibility/aria-selected-menu-items-expected.txt: Added. Canonical link: https://commits.webkit.org/182638@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208929 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-11-19 21:12:24 +00:00
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
<script src="../resources/accessibility-helper.js"></script>
</head>
<body id="body">
<div id="content">
<div id="menu1" role="menu" aria-label="First menu">
<div role="menuitem" id="item1" aria-label="item 1" tabindex="-1">Menu item 1</div>
<div role="menuitem" id="item2" aria-label="item 2" tabindex="0">Menu item 2</div>
<div role="menuitem" id="item3" aria-label="item 3" tabindex="-1">Menu item 3</div>
</div>
<div id="menu2" role="menu" aria-label="Second menu" aria-activedescendant="item5">
<div role="menuitemcheckbox" id="item4" aria-label="item 4" tabindex="-1">Menu item 4</div>
<div role="menuitemcheckbox" id="item5" aria-label="item 5" tabindex="-1">Menu item 5</div>
<div role="menuitemcheckbox" id="item6" aria-label="item 6" tabindex="-1">Menu item 6</div>
</div>
<div id="menubar1" role="menubar" aria-label="First menubar">
<div role="menuitem" id="item7" aria-label="File" tabindex="-1">File</div>
<div role="menuitem" id="item8" aria-label="Edit" tabindex="0">Edit</div>
<div role="menuitem" id="item9" aria-label="View" tabindex="-1">View</div>
</div>
<div id="menubar2" role="menubar" aria-label="Second menubar" aria-activedescendant="item12">
<div role="menuitem" id="item10" aria-label="File" tabindex="-1">File</div>
<div role="menuitem" id="item11" aria-label="Edit" tabindex="-1">Edit</div>
<div role="menuitem" id="item12" aria-label="View" tabindex="-1">View</div>
</div>
</div>
<p id="description"></p>
<div id="console"></div>
<script>
function selectedChildInfo(axElement) {
if (!axElement)
debug("Element not exposed");
var count = axElement.selectedChildrenCount;
debug(platformValueForW3CName(axElement) + " has " + count + " selected child(ren)");
for (var i = 0; i < count; i++) {
var child = axElement.selectedChildAtIndex(i);
result = "\t" + platformValueForW3CName(child) + " (" + child.role + ")";
result += " isSelectable: " + child.isSelectable + " isSelected: " + child.isSelected;
debug(result);
}
}
description("This tests that focused/active menu items are reported as selected children of the parent container.");
if (window.accessibilityController) {
document.getElementById("item2").focus();
selectedChildInfo(window.accessibilityController.accessibleElementById("menu1"));
selectedChildInfo(window.accessibilityController.accessibleElementById("menu2"));
document.getElementById("item8").focus();
selectedChildInfo(window.accessibilityController.accessibleElementById("menubar1"));
selectedChildInfo(window.accessibilityController.accessibleElementById("menubar2"));
document.getElementById("content").style.visibility = "hidden";
}
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>