2013-12-03 17:40:37 +00:00
|
|
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
|
|
</head>
|
|
|
|
<body id="body">
|
|
|
|
|
|
|
|
<h1 hidden id="heading1_1">heading1.1</h1>
|
|
|
|
<h1 aria-hidden="true" id="heading1_2">heading1.2</h1>
|
|
|
|
<h1 hidden aria-hidden="true" id="heading1_3">heading1.3</h1>
|
|
|
|
|
|
|
|
<h1 hidden aria-hidden="false" id="heading2">heading2</h1>
|
|
|
|
<h1 style="display:none;" aria-hidden="false" id="heading3">heading3</h1>
|
|
|
|
<h1 style="visibility:hidden;" aria-hidden="false" id="heading4">heading4</h1>
|
|
|
|
|
|
|
|
<div hidden aria-hidden="false" id="hiddenDiv">HiddenText1</div>
|
|
|
|
<input type="text" aria-labelledby="hiddenDiv" id="textFieldWithHiddenLabeller">
|
|
|
|
|
2020-06-29 18:54:16 +00:00
|
|
|
<div>
|
2016-03-31 16:17:17 +00:00
|
|
|
<div aria-hidden="false">
|
2020-06-29 18:54:16 +00:00
|
|
|
<video hidden id="video">
|
2016-03-31 16:17:17 +00:00
|
|
|
Hidden content
|
|
|
|
</video>
|
|
|
|
</div>
|
2020-06-29 18:54:16 +00:00
|
|
|
</div>
|
2016-03-31 16:17:17 +00:00
|
|
|
|
2013-12-03 17:40:37 +00:00
|
|
|
<p id="description"></p>
|
|
|
|
<div id="console"></div>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
description("This tests ensures that aria-hidden=false will allow a node to be in the AX hierarchy even if it's not rendered or visible");
|
|
|
|
|
|
|
|
if (window.accessibilityController) {
|
|
|
|
|
|
|
|
// First groups of headings are actually hidde.n
|
|
|
|
var heading1_1 = accessibilityController.accessibleElementById("heading1_1");
|
|
|
|
shouldBeTrue("!heading1_1 || !heading1_1.isValid");
|
|
|
|
|
|
|
|
var heading1_2 = accessibilityController.accessibleElementById("heading1_2");
|
|
|
|
shouldBeTrue("!heading1_2 || !heading1_3.isValid");
|
|
|
|
|
|
|
|
var heading1_3 = accessibilityController.accessibleElementById("heading1_3");
|
|
|
|
shouldBeTrue("!heading1_3 || !heading1_3.isValid");
|
|
|
|
|
|
|
|
// These headings should be in AX tree despite being hidden.
|
|
|
|
var heading2 = accessibilityController.accessibleElementById("heading2");
|
|
|
|
shouldBe("heading2.role", "'AXRole: AXHeading'");
|
|
|
|
|
|
|
|
// Check that the order of these elements is correct based on DOM order.
|
|
|
|
var parent = heading2.parentElement();
|
|
|
|
shouldBeTrue("parent.childAtIndex(0).isEqual(heading2)");
|
|
|
|
|
|
|
|
var heading3 = accessibilityController.accessibleElementById("heading3");
|
|
|
|
shouldBe("heading3.role", "'AXRole: AXHeading'");
|
|
|
|
shouldBeTrue("parent.childAtIndex(1).isEqual(heading3)");
|
|
|
|
|
|
|
|
var heading4 = accessibilityController.accessibleElementById("heading4");
|
|
|
|
shouldBe("heading4.role", "'AXRole: AXHeading'");
|
|
|
|
shouldBeTrue("parent.childAtIndex(2).isEqual(heading4)");
|
|
|
|
|
|
|
|
// The aria-labelledby attribute should work even though hidden.
|
|
|
|
var textField = accessibilityController.accessibleElementById("textFieldWithHiddenLabeller");
|
|
|
|
debug("Textfield Title: " + textField.title);
|
2016-03-31 16:17:17 +00:00
|
|
|
|
|
|
|
// aria-hidden="false" need to be on each parent, including rendered parents.
|
|
|
|
var video = accessibilityController.accessibleElementById("video");
|
2020-06-29 18:54:16 +00:00
|
|
|
shouldBeTrue("!video || video.childrenCount == 0");
|
2013-12-03 17:40:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script src="../resources/js-test-post.js"></script>
|
|
|
|
</body>
|
|
|
|
</html>
|