| <!DOCTYPE HTML> |
| <html> |
| <body> |
| <script src="../resources/js-test.js"></script> |
| |
| <div id="container"> |
| <label id="nothing1">Nothing</label> |
| <label id="text_label1"> |
| Text |
| <input id="text1" type="text"> |
| </label> |
| <label id="check_label1"> |
| Checkbox |
| <input id="check1" type="checkbox"> |
| </label> |
| <label id="radio_label1"> |
| Radio |
| <input id="radio1" type="radio"> |
| </label> |
| <label id="slider_label1"> |
| Slider |
| <input id="slider1" type="range"> |
| </label> |
| <label id="list_label1"> |
| List |
| <select id="list1"><option>1</option></select> |
| </label> |
| <label id="label_for1" for="text_for1">Text with label for</label> |
| <input id="text_for1" type="text"> |
| </div> |
| |
| <canvas id="myCanvas" width="300" height="300"> |
| <label id="nothing2">Nothing</label> |
| <label id="text_label2"> |
| Text |
| <input id="text2" type="text"> |
| </label> |
| <label id="check_label2"> |
| Checkbox |
| <input id="check2" type="checkbox"> |
| </label> |
| <label id="radio_label2"> |
| Radio |
| <input id="radio2" type="radio"> |
| </label> |
| <label id="slider_label2"> |
| Slider |
| <input id="slider2" type="range"> |
| </label> |
| <label id="list_label2"> |
| List |
| <select id="list2"><option>1</option></select> |
| </label> |
| <label id="label_for2" for="text_for2">Text with label for</label> |
| <input id="text_for2" type="text"> |
| </canvas> |
| |
| <div id="console"></div> |
| <script> |
| description("This tests that labels and elements with labels in canvas fallback content have the same accessibility properties as those same elements outside of a canvas."); |
| |
| if (window.testRunner && window.accessibilityController) { |
| testRunner.dumpAsText(); |
| |
| window.collapseWhitespace = function(str) { |
| return str.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); |
| } |
| |
| // Given the ids of two elements, one inside canvas fallback content and one outside, |
| // make sure their accessibility properties are the same, checking primarily properties |
| // that affect label elements and controls with labels. It's also okay if an element is |
| // missing from the tree as long as it's missing from both (like when a label is ignored). |
| function check(id1, id2) { |
| debug("Checking accessibility properties for ids: " + id1 + ", " + id2); |
| window.axElement1 = accessibilityController.accessibleElementById(id1); |
| window.axElement2 = accessibilityController.accessibleElementById(id2); |
| |
| if (axElement1 == null && axElement2 == null) { |
| shouldBe("axElement1 == null && axElement2 == null", "true"); |
| debug(""); |
| return; |
| } |
| shouldBe("axElement2.role", "axElement1.role"); |
| shouldBe("collapseWhitespace(axElement2.name)", "collapseWhitespace(axElement1.name)"); |
| shouldBe("axElement2.nameElementCount()", "axElement1.nameElementCount()"); |
| debug(""); |
| } |
| |
| check("nothing1", "nothing2"); |
| check("text_label1", "text_label2"); |
| check("text1", "text2"); |
| check("check_label1", "check_label2"); |
| check("check1", "check2"); |
| check("radio_label1", "radio_label2"); |
| check("radio1", "radio2"); |
| check("slider_label1", "slider_label2"); |
| check("slider1", "slider2"); |
| check("list_label1", "list_label2"); |
| check("list1", "list2"); |
| check("label_for1", "label_for2"); |
| check("text_for1", "text_for2"); |
| |
| document.getElementById("container").style.display = "none"; |
| } |
| |
| </script> |
| |
| </body> |
| </html> |