| <!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 class="ex" data-label="hello link use world test1 test2 test3" aria-labelledby="a1 b1" id="test1" role="group">group text</div> |
| <div id="a1">hello <a href="#">link</a> <div role="group">skip</div> <div role="group" aria-label="use">skip</div> world</div> |
| <!-- paragraph role is ambiguous so okay to leave next example as it --> |
| <div id="b1"><button>test1</button><p tabindex=0>test2 <span aria-hidden="true">hidden</span> test3</p></div> |
| |
| <input type="checkbox" aria-labelledby="reverselabelfor" id="test2" class="ex" data-label="foo bar" data-note="labelled by label element"> |
| <label id="reverselabelfor">foo <span role="text" aria-label="bar">skip</span></label> |
| <br> |
| |
| <input type="checkbox" aria-labelledby="reverselabelforwithdiv" id="test3" class="ex" data-label="foo bar" data-note="labelled by div element"> |
| <div id="reverselabelforwithdiv">foo <span role="text" aria-label="bar">skip</span></div> |
| <br> |
| |
| <!-- would be "bar" natively, but label explicitly overridden to "foo" by labelledby --> |
| <div id="overridesnativelabel">foo</div><label for="nativelabeloverridden">bar</label> |
| <input class="ex" data-label="foo" id="test4" type="text" aria-labelledby="overridesnativelabel" data-note="overrides native label"> |
| |
| <!-- self-referencing labelledby in combination with external reference --> |
| <div id="productname1"><nav role="navigation"><!-- nav does not get nameFrom:contents -->product name</nav></div> |
| <button class="ex" data-label="Delete" aria-label="Delete" aria-labelledby="test5 productname1" id="test5" data-note="self-referencial labelledby includes nav">x</button> |
| |
| <!-- self-referencing labelledby in combination with external reference --> |
| <div id="productname2"><nav role="heading"><!-- nav does not get nameFrom:contents, but heading does. -->product name</nav></div> |
| <button class="ex" data-label="Delete product name" aria-label="Delete" aria-labelledby="test6 productname2" id="test6" data-note="self-referencial labelledby includes heading">x</button> |
| |
| <div class="ex" data-label="foo bar baz bop bap boom" aria-labelledby="a3 b3" id="test7" role="group" data-note="includes form elements">foo</div> |
| <button id="a3"> foo <img src="#" alt="bar"> baz</button> |
| <div id="b3">bop <input value="bap"> <input type="range" aria-valuetext="boom"></div> |
| |
| |
| </div> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| |
| description("This tests that if aria-labelledby is pointing to nodes with descendants, it returns all text."); |
| |
| if (window.accessibilityController) { |
| for (var k = 1; k < 8; k++) { |
| var test = accessibilityController.accessibleElementById("test" + k); |
| debug("test " + k + ": aria-labelledby description: " + platformValueForW3CName(test)); |
| debug("test " + k + ": expected description: " + document.getElementById("test" + k).getAttribute("data-label") + "\n"); |
| } |
| document.getElementById("content").style.visibility = "hidden"; |
| } |
| |
| </script> |
| |
| <script src="../resources/js-test-post.js"></script> |
| </body> |
| </html> |