<html> | |
<head> | |
<script src="../resources/js-test-pre.js"></script> | |
<script src="../resources/accessibility-helper.js"></script> | |
</head> | |
<body> | |
<table id="content" role="grid"> | |
<thead> | |
<tr aria-label="Header" role="row"> | |
<th id="Account" role="columnheader" onclick="toggleAriaSort()" aria-sort="ascending" aria-label="Acount Name" title="Account Name">Account Name</th> | |
</tr> | |
</thead> | |
</table> | |
<p id="description"></p> | |
<div id="console"></div> | |
<script> | |
description("This tests that changing the aria-sort value results in a SortDirectionChanged notification."); | |
window.jsTestIsAsync = true; | |
if (window.accessibilityController) { | |
var notificationCount = 0; | |
accessibilityController.addNotificationListener(function(element, notification) { | |
if (notification != "AXSortDirectionChanged") | |
return; | |
++notificationCount; | |
debug(notification + " notification for " + element.domIdentifier); | |
}); | |
function toggleAriaSort(element) { | |
var sortingState = element.getAttribute("aria-sort"); | |
if (sortingState == "ascending") | |
element.setAttribute("aria-sort", "descending"); | |
else | |
element.setAttribute("aria-sort", "ascending"); | |
} | |
var columnHeader = document.getElementById("Account"); | |
var axColumnHeader = accessibilityController.accessibleElementById("Account"); | |
shouldBe("axColumnHeader.sortDirection", "'AXAscendingSortDirection'"); | |
debug("Toggling aria-sort"); | |
toggleAriaSort(columnHeader); | |
setTimeout(async function() { | |
await waitFor(() => { | |
return notificationCount == 1;//axColumnHeader.sortDirection == "AXDescendingSortDirection"; | |
}); | |
shouldBe("axColumnHeader.sortDirection", "'AXDescendingSortDirection'"); | |
debug("Setting aria-sort to a random value"); | |
columnHeader.setAttribute("aria-sort", "blah blah blah"); | |
await waitFor(() => { | |
return notificationCount == 2;//axColumnHeader.sortDirection == "AXUnknownSortDirection"; | |
}); | |
shouldBe("axColumnHeader.sortDirection", "'AXUnknownSortDirection'"); | |
debug("Toggling aria-sort"); | |
toggleAriaSort(columnHeader); | |
await waitFor(() => { | |
return notificationCount == 3;//axColumnHeader.sortDirection == "AXAscendingSortDirection"; | |
}); | |
shouldBe("axColumnHeader.sortDirection", "'AXAscendingSortDirection'"); | |
shouldBe("notificationCount", "3"); | |
document.getElementById("content").style.visibility = "hidden"; | |
accessibilityController.removeNotificationListener(); | |
finishJSTest(); | |
}, 0); | |
} | |
</script> | |
<script src="../resources/js-test-post.js"></script> | |
</body> | |
</html> |