haikuwebkit/LayoutTests/accessibility/treeitem-child-exposed.html

48 lines
1.3 KiB
HTML
Raw Permalink Normal View History

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body id="body">
<div role="tree" id="tree">
<div role="treeitem" id="item1">
<input id="input1" /input>
</div>
<input id="input2" /input>
<div role="treeitem" id="item2">
<row>
<input id="input3" /input>
</row>
</div>
</div>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests if a treeitem contains an element other than static text, it should be exposed");
if (window.accessibilityController) {
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
// tree should only have 3 child, since malformed tree should also be accessible.
var tree = accessibilityController.accessibleElementById("tree");
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
shouldBe("tree.childrenCount", "3");
// input filed in treeitem1 should be exposed
var inputField = accessibilityController.accessibleElementById("input1");
shouldBeTrue("inputField.isValid");
// treeitem's children should be exposed, eg. the input field in treeitem2
var inputField3 = accessibilityController.accessibleElementById("input3");
shouldBeTrue("inputField3.isValid");
}
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>