89 lines
3.0 KiB
HTML
89 lines
3.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body id="body">
|
|
|
|
<div role="group" tabindex=0 id="liveregion1" aria-live="polite" aria-relevant="additions">
|
|
<h3 id="innerlive">text</h3>
|
|
</div>
|
|
|
|
<div role="group" tabindex=0 id="liveregion2" aria-live="polite" aria-relevant="additions">
|
|
<img src="test.gif" width=100 height=100 alt="alt text" tabindex=0 id="image">
|
|
</div>
|
|
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
|
|
<script>
|
|
var jsTestIsAsync = true;
|
|
|
|
description("This tests that ARIA live regions are sending out the correct notifications. We perform two operations to each aria region, at the end it should trigger two live region notifications");
|
|
|
|
var liveRegion1 = 0;
|
|
var liveRegion2 = 0;
|
|
var liveRegionChangeCount = 0;
|
|
function ariaCallback(notification) {
|
|
if (notification == "AXLiveRegionChanged") {
|
|
liveRegionChangeCount++;
|
|
}
|
|
}
|
|
|
|
if (window.accessibilityController) {
|
|
|
|
liveRegion1 = accessibilityController.accessibleElementById("liveregion1");
|
|
var addedNotification1 = liveRegion1.addNotificationListener(ariaCallback);
|
|
shouldBeTrue("addedNotification1");
|
|
|
|
liveRegion2 = accessibilityController.accessibleElementById("liveregion2");
|
|
var addedNotification2 = liveRegion2.addNotificationListener(ariaCallback);
|
|
shouldBeTrue("addedNotification2");
|
|
|
|
// perform operations on both live regions.
|
|
textChangeOperation();
|
|
newElementOperation();
|
|
alternativeChangeOperation();
|
|
removeElementOperation();
|
|
|
|
// add a short delay to check after all the operations if we have exactly two notifications
|
|
setTimeout("finishTest()", 50);
|
|
}
|
|
|
|
function textChangeOperation() {
|
|
// this should trigger a live region change for a text change.
|
|
document.getElementById("innerlive").innerText = "changed text";
|
|
document.body.offsetHeight;
|
|
}
|
|
|
|
function newElementOperation() {
|
|
// this should trigger a live region change for a new element.
|
|
document.getElementById("liveregion1").innerHTML += "new text element";
|
|
document.body.offsetHeight;
|
|
}
|
|
|
|
function alternativeChangeOperation() {
|
|
// this should also trigger a live region change because its a text alternative change.
|
|
document.getElementById("image").setAttribute('alt', "new image text");
|
|
document.body.offsetHeight;
|
|
}
|
|
|
|
function removeElementOperation() {
|
|
// this should trigger a live region change for a removed element.
|
|
document.getElementById("liveregion2").removeChild(document.getElementById("image"));
|
|
document.body.offsetHeight;
|
|
}
|
|
|
|
function finishTest() {
|
|
// We should get a total of two live region changes.
|
|
liveRegion1.removeNotificationListener();
|
|
liveRegion2.removeNotificationListener();
|
|
shouldBe("liveRegionChangeCount", "2");
|
|
finishJSTest();
|
|
}
|
|
</script>
|
|
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|