diff options
Diffstat (limited to 'accessible/tests/mochitest/attributes/test_obj.html')
-rw-r--r-- | accessible/tests/mochitest/attributes/test_obj.html | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/accessible/tests/mochitest/attributes/test_obj.html b/accessible/tests/mochitest/attributes/test_obj.html new file mode 100644 index 000000000..9e147e1d1 --- /dev/null +++ b/accessible/tests/mochitest/attributes/test_obj.html @@ -0,0 +1,278 @@ +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=475006 +https://bugzilla.mozilla.org/show_bug.cgi?id=391829 +https://bugzilla.mozilla.org/show_bug.cgi?id=581952 +https://bugzilla.mozilla.org/show_bug.cgi?id=558036 +--> +<head> + <title>Group attributes tests</title> + <link rel="stylesheet" type="text/css" + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> + + <script type="application/javascript" + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + + <script type="application/javascript" + src="../common.js"></script> + <script type="application/javascript" + src="../attributes.js"></script> + + <script type="application/javascript"> + function doTest() + { + // aria + testAttrs("atomic", {"atomic" : "true", "container-atomic" : "true"}, true); + testAttrs(getNode("atomic").firstChild, {"container-atomic" : "true"}, true); + testAbsentAttrs("atomic_false", {"atomic" : "false", "container-atomic" : "false"}); + testAbsentAttrs(getNode("atomic_false").firstChild, {"container-atomic" : "false"}); + + testAttrs("autocomplete", {"autocomplete" : "true"}, true); + testAttrs("checkbox", {"checkable" : "true"}, true); + testAttrs("checkedCheckbox", {"checkable" : "true"}, true); + testAttrs("checkedMenuitem", {"checkable" : "true"}, true); + testAttrs("checkedOption", {"checkable" : "true"}, true); + testAttrs("checkedRadio", {"checkable" : "true"}, true); + testAttrs("checkedTreeitem", {"checkable" : "true"}, true); + testAttrs("dropeffect", {"dropeffect" : "copy"}, true); + testAttrs("grabbed", {"grabbed" : "true"}, true); + testAbsentAttrs("haspopup", { "haspopup": "false" }); + testAttrs("hidden", {"hidden" : "true"}, true); + testAbsentAttrs("hidden_false", { "hidden": "false" }); + testAbsentAttrs("modal", {"modal" : "true"}); + testAttrs("sortAscending", {"sort" : "ascending"}, true); + testAttrs("sortDescending", {"sort" : "descending"}, true); + testAttrs("sortNone", {"sort" : "none"}, true); + testAttrs("sortOther", {"sort" : "other"}, true); + testAttrs("roledescr", {"roledescription" : "spreadshit"}, true); + testAttrs("currentPage", {"current" : "page"}, true); + + // inherited attributes by subdocuments + var subdoc = getAccessible("iframe").firstChild; + testAttrs(subdoc, {"busy" : "true"}, true); + + // live object attribute + + // HTML + testAttrs("output", {"live" : "polite"}, true); + + // ARIA + testAttrs("live", {"live" : "polite"}, true); + testAttrs("live2", {"live" : "polite"}, true); + testAbsentAttrs("live3", {"live" : ""}); + testAttrs("log", {"live" : "polite"}, true); + testAttrs("logAssertive", {"live" : "assertive"}, true); + testAttrs("marquee", {"live" : "off"}, true); + testAttrs("status", {"live" : "polite"}, true); + testAttrs("timer", {"live" : "off"}, true); + testAbsentAttrs("tablist", {"live" : "polite"}); + + // container-live object attribute + testAttrs("liveChild", {"container-live" : "polite"}, true); + testAttrs("live2Child", {"container-live" : "polite"}, true); + testAttrs("logChild", {"container-live" : "polite"}, true); + testAttrs("logAssertiveChild", {"container-live" : "assertive"}, true); + testAttrs("marqueeChild", {"container-live" : "off"}, true); + testAttrs("statusChild", {"container-live" : "polite"}, true); + testAttrs("timerChild", {"container-live" : "off"}, true); + testAbsentAttrs("tablistChild", {"container-live" : "polite"}); + + // container-live-role object attribute + testAttrs("log", {"container-live-role" : "log"}, true); + testAttrs("logAssertive", {"container-live-role" : "log"}, true); + testAttrs("marquee", {"container-live-role" : "marquee"}, true); + testAttrs("status", {"container-live-role" : "status"}, true); + testAttrs("timer", {"container-live-role" : "timer"}, true); + testAttrs("logChild", {"container-live-role" : "log"}, true); + testAttrs("logAssertive", {"container-live-role" : "log"}, true); + testAttrs("logAssertiveChild", {"container-live-role" : "log"}, true); + testAttrs("marqueeChild", {"container-live-role" : "marquee"}, true); + testAttrs("statusChild", {"container-live-role" : "status"}, true); + testAttrs("timerChild", {"container-live-role" : "timer"}, true); + testAbsentAttrs("tablistChild", {"container-live-role" : "tablist"}); + + // absent aria-label and aria-labelledby object attribute + testAbsentAttrs("label", {"label" : "foo"}); + testAbsentAttrs("labelledby", {"labelledby" : "label"}); + + // container that has no default live attribute + testAttrs("liveGroup", {"live" : "polite"}, true); + testAttrs("liveGroupChild", {"container-live" : "polite"}, true); + testAttrs("liveGroup", {"container-live-role" : "group"}, true); + testAttrs("liveGroupChild", {"container-live-role" : "group"}, true); + + // text input type + testAbsentAttrs("button", { "text-input-type": "button"}); + testAbsentAttrs("checkbox", { "text-input-type": "checkbox"}); + testAbsentAttrs("radio", { "text-input-type": "radio"}); + testAttrs("email", {"text-input-type" : "email"}, true); + testAttrs("search", {"text-input-type" : "search"}, true); + testAttrs("tel", {"text-input-type" : "tel"}, true); + testAttrs("url", {"text-input-type" : "url"}, true); + + // ARIA + testAttrs("searchbox", {"text-input-type" : "search"}, true); + + // html + testAttrs("radio", {"checkable" : "true"}, true); + testAttrs("checkbox", {"checkable" : "true"}, true); + testAttrs("draggable", {"draggable" : "true"}, true); + testAttrs("th1", { "abbr": "SS#" }, true); + testAttrs("th2", { "abbr": "SS#" }, true); + testAttrs("th2", { "axis": "social" }, true); + + // don't barf on an empty abbr element. + testAbsentAttrs("th3", { "abbr": "" }, true); + + // application accessible + if (WIN) { + var gfxInfo = Components.classes["@mozilla.org/gfx/info;1"]. + getService(Components.interfaces.nsIGfxInfo); + var attrs = { + "D2D": (gfxInfo.D2DEnabled ? "true" : "false") + } + testAttrs(getApplicationAccessible(), attrs, false); + } + + // no object attributes + testAbsentAttrs(getAccessible("listitem").firstChild, { "tag": "" }); + + // experimental aria + testAttrs("experimental", {"blah" : "true"}, true); + + SimpleTest.finish(); + } + + SimpleTest.waitForExplicitFinish(); + addA11yLoadEvent(doTest); + </script> +</head> +<body> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=475006" + title="Extend nsARIAMap to capture ARIA attribute characteristics"> + Mozilla Bug 475006 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=391829" + title="Add support for container-live-role to object attributes"> + Mozilla Bug 391829 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=581952" + title="Make explicit that aria-label is not an object attribute"> + Mozilla Bug 475006 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=558036" + title="make HTML <output> accessible"> + Mozilla Bug 558036 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=896400" + title="Tablist should no longer be an implicit live region"> + Mozilla Bug 896400 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=563862" + title="Expand support for nsIAccessibleEvent::OBJECT_ATTRIBUTE_CHANGE"> + Mozilla Bug 563862 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=819303" + title="crash in nsTextEquivUtils::AppendTextEquivFromTextContent"> + Mozilla Bug 819303 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=838407" + title="aria-hidden false value shouldn't be exposed via object attributes"> + Mozilla Bug 838407 + </a> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=1121518" + title="ARIA 1.1: Support role 'searchbox'"> + Mozilla Bug 1121518 + </a> + <p id="display"></p> + <div id="content" style="display: none"></div> + <pre id="test"> + </pre> + + <!-- aria --> + <div id="atomic" aria-atomic="true">live region</div> + <div id="atomic_false" aria-atomic="false">live region</div> + <div id="autocomplete" role="textbox" aria-autocomplete="true"></div> + <div id="checkbox" role="checkbox"></div> + <div id="checkedCheckbox" role="checkbox" aria-checked="true"></div> + <div id="checkedMenuitem" role="menuitem" aria-checked="true"></div> + <div id="checkedOption" role="option" aria-checked="true"></div> + <div id="checkedRadio" role="radio" aria-checked="true"></div> + <div id="checkedTreeitem" role="treeitem" aria-checked="true"></div> + <div id="dropeffect" aria-dropeffect="copy"></div> + <div id="grabbed" aria-grabbed="true"></div> + <div id="haspopup" aria-haspopup="true"></div> + <div id="hidden" aria-hidden="true"></div> + <div id="hidden_false" aria-hidden="false"></div> + <div id="modal" aria-modal="true"></div> + <div id="sortAscending" role="columnheader" aria-sort="ascending"></div> + <div id="sortDescending" role="columnheader" aria-sort="descending"></div> + <div id="sortNone" role="columnheader" aria-sort="none"></div> + <div id="sortOther" role="columnheader" aria-sort="other"></div> + <div id="roledescr" aria-roledescription="spreadshit"></div> + <div id="currentPage" aria-current="page"></div> + + <!-- inherited from iframe --> + <iframe id="iframe" src="data:text/html,<html><body></body></html>" + aria-busy="true"></iframe> + + <!-- html --> + <output id="output"></output> + + <!-- back to aria --> + <div id="live" aria-live="polite">excuse <div id="liveChild">me</div></div> + <div id="live2" role="marquee" aria-live="polite">excuse <div id="live2Child">me</div></div> + <div id="live3" role="region">excuse</div> + <div id="log" role="log">excuse <div id="logChild">me</div></div> + <div id="logAssertive" role="log" aria-live="assertive">excuse <div id="logAssertiveChild">me</div></div> + <div id="marquee" role="marquee">excuse <div id="marqueeChild">me</div></div> + <div id="status" role="status">excuse <div id="statusChild">me</div></div> + <div id="tablist" role="tablist">tablist <div id="tablistChild">tab</div></div> + <div id="timer" role="timer">excuse <div id="timerChild">me</div></div> + + <!-- aria-label[ledby] should not be an object attribute --> + <div id="label" role="checkbox" aria-label="foo"></div> + <div id="labelledby" role="checkbox" aria-labelledby="label"></div> + + <!-- unusual live case --> + <div id="liveGroup" role="group" aria-live="polite"> + excuse <div id="liveGroupChild">me</div> + </div> + + <!-- text input type --> + <input id="button" type="button"/> + <input id="email" type="email"/> + <input id="search" type="search"/> + <input id="tel" type="tel"/> + <input id="url" type="url"/> + <div id="searchbox" role="searchbox"></div> + + <!-- html --> + <input id="radio" type="radio"/> + <input id="checkbox" type="checkbox"/> + <div id="draggable" draggable="true">Draggable div</div> + <table> + <tr> + <th id="th1"><abbr title="Social Security Number">SS#</abbr></th> + <th id="th2" abbr="SS#" axis="social">Social Security Number</th> + <th id="th3"><abbr></abbr></th> + </tr> + </table> + + <ul> + <li id="listitem">item + </ul> + + <!-- experimental aria --> + <div id="experimental" aria-blah="true">Fake beer</div> +</body> +</html> |