blob: 207692d19e4d6fb1ecb3df5502d4ed4ffd8a7487 [file] [edit]
<html>
<head>
<script src="../../resources/accessibility-helper.js"></script>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div id="textbox1" role="textbox" aria-required="false" tabindex="0"></div>
<div id="textbox2" role="textbox" aria-required="true" tabindex="0"></div>
<p id="description"></p>
<div id="console"></div>
<script>
window.jsTestIsAsync = true;
description("This tests that changing the aria-required value results in a state-changed notification.");
if (window.testRunner && window.accessibilityController) {
var notificationCount = 0;
accessibilityController.addNotificationListener(function(element, notification, state) {
if (notification != "AXRequiredStatusChanged")
return;
debug(notification + " " + (state == "1") + " on " + element.domIdentifier);
++notificationCount;
});
var textbox1 = accessibilityController.accessibleElementById("textbox1");
shouldBe("textbox1.isRequired", "false");
var textbox2 = accessibilityController.accessibleElementById("textbox2");
shouldBe("textbox2.isRequired", "true");
var element = document.getElementById("textbox1");
element.focus();
debug("Setting aria-required to true on textbox1.");
element.setAttribute("aria-required", "true");
element = document.getElementById("textbox2");
element.focus();
debug("Setting aria-required to false on textbox2.");
element.setAttribute("aria-required", "false");
window.setTimeout(async function() {
await waitFor(() => {
return notificationCount == 2;
});
shouldBe("textbox1.isRequired", "true");
shouldBe("textbox2.isRequired", "false");
accessibilityController.removeNotificationListener();
finishJSTest();
}, 0);
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>