haikuwebkit/LayoutTests/accessibility/aria-mappings.html

75 lines
3.5 KiB
HTML
Raw Permalink Normal View History

<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<div id="alert" role="alert">alert role</div>
<div id="alertdialog" role="alertdialog">alertdialog role</div>
<div id="article" role="article">article role</div>
<div id="dialog" role="dialog">dialog role</div>
<div id="document" role="document">document role</div>
<div id="status" role="status">status role</div>
<div id="tooltip" role="tooltip">tooltip role</div>
AX: VoiceOver unable to access content in malformed trees https://bugs.webkit.org/show_bug.cgi?id=147295 <rdar://problem/14862892> Patch by Nan Wang <n_wang@apple.com> on 2015-07-30 Reviewed by Chris Fleizach. Source/WebCore: VoiceOver is skipping the content of malformed trees. This fixes the problem by having the tree check if it has valid children (treeitems) and makes treeitems check if they are inside trees. Test: platform/mac/accessibility/malformed-tree.html * CMakeLists.txt: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.vcxproj/WebCore.vcxproj.filters: * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::addChildren): (WebCore::AccessibilityObject::addChild): (WebCore::AccessibilityObject::insertChild): (WebCore::AccessibilityObject::shouldIgnoreAttributeRole): (WebCore::AccessibilityObject::canHaveChildren): (WebCore::AccessibilityObject::hasChildren): * accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::determineAccessibilityRole): * accessibility/AccessibilityTree.cpp: Added. (WebCore::AccessibilityTree::AccessibilityTree): (WebCore::AccessibilityTree::~AccessibilityTree): (WebCore::AccessibilityTree::create): (WebCore::AccessibilityTree::computeAccessibilityIsIgnored): (WebCore::AccessibilityTree::determineAccessibilityRole): (WebCore::AccessibilityTree::isTreeValid): * accessibility/AccessibilityTree.h: Added. * accessibility/AccessibilityTreeItem.cpp: Added. (WebCore::AccessibilityTreeItem::AccessibilityTreeItem): (WebCore::AccessibilityTreeItem::~AccessibilityTreeItem): (WebCore::AccessibilityTreeItem::create): (WebCore::AccessibilityTreeItem::determineAccessibilityRole): * accessibility/AccessibilityTreeItem.h: Added. LayoutTests: * accessibility/aria-mappings.html: * accessibility/treeitem-child-exposed-expected.txt: * accessibility/treeitem-child-exposed.html: * platform/mac/accessibility/malformed-tree-expected.txt: Added. * platform/mac/accessibility/malformed-tree.html: Added. Canonical link: https://commits.webkit.org/165525@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@187582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-07-30 11:10:38 +00:00
<div id="tree" role="tree"><div role="treeitem">tree role</div></div>
<div role="tree"><div id="treeitem" role="treeitem">treeitem role</div></div>
<br>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests that each of these ARIA roles have appropriate mappings.");
if (window.testRunner) {
testRunner.dumpAsText();
if (window.accessibilityController) {
document.body.focus();
var body = accessibilityController.focusedElement;
debug("Role for 'body' is: " + body.role);
debug("<br>");
debug("role=\"alert\" should give a message with important, and usually time-sensitive, information.");
debug("Role for 'alert' div is: " + accessibilityController.accessibleElementById("alert").role);
debug("<br>");
debug("role=\"alertdialog\" is a dialog which contains an alert message.");
debug("Role for 'alertdialog' div is: " + accessibilityController.accessibleElementById("alertdialog").role);
debug("<br>");
debug("role=\"article\" is a section of a page that consists of a composition that forms an independent part of a document, page, or site");
debug("Role for 'article' div is: " + accessibilityController.accessibleElementById("article").role);
debug("<br>");
debug("role=\"dialog\" is an application window that is designed to interrupt the current processing of an application in order to prompt the user to enter information or require a response.");
debug("Role for 'dialog' div is: " + accessibilityController.accessibleElementById("dialog").role);
debug("<br>");
debug("role=\"document\" is a region containing related information that is declared as document content, as opposed to a web application.");
debug("Role for 'document' div is: " + accessibilityController.accessibleElementById("document").role);
debug("<br>");
debug("role=\"status\" is a container whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar.");
debug("Role for 'status' div is: " + accessibilityController.accessibleElementById("status").role);
debug("<br>");
debug("role=\"tooltip\" is a contextual popup that displays a description for an element.");
debug("Role for 'tooltip' div is: " + accessibilityController.accessibleElementById("tooltip").role);
debug("<br>");
debug("role=\"tree\" is a type of list that may contain sub-level nested groups that can be collapsed and expanded.");
debug("Role for 'tree' div is: " + accessibilityController.accessibleElementById("tree").role);
debug("<br>");
debug("role=\"treeitem\" is an option item of a tree.");
debug("Role for 'treeitem' div is: " + accessibilityController.accessibleElementById("treeitem").role);
}
}
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>