blob: 2ab59d8bc6a73419fc9a119ea4bb8f494cfc1d9c [file] [log] [blame] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/accessibility-helper.js"></script>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<ul id="tree" role="tree" aria-multiselectable="true" tabindex="0">
<li id="treeitem1" role="treeitem"><span>Siamese</span></li>
<li id="treeitem2" role="treeitem"><span>Tabby</span></li>
</ul>
<script>
var testOutput = "This tests that aria trees that are multi selectable will return the right selected rows.\n\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var tree = accessibilityController.accessibleElementById("tree");
var treeitem1 = tree.childAtIndex(0);
testOutput += expect("treeitem1.role", "'AXRole: AXRow'");
testOutput += expect("treeitem1.subrole", "'AXSubrole: AXOutlineRow'");
document.getElementById("treeitem1").setAttribute("aria-selected", true);
var treeitem2 = tree.childAtIndex(1);
testOutput += expect("treeitem2.role", "'AXRole: AXRow'");
testOutput += expect("treeitem2.subrole", "'AXSubrole: AXOutlineRow'");
document.getElementById("treeitem2").setAttribute("aria-selected", true);
var selectedRow1, selectedRow2;
setTimeout(async function() {
// Test that the tree will give us both rows as selected (since its multi-selectable)
await waitFor(() => {
selectedRow1 = tree.selectedRowAtIndex(0);
selectedRow2 = tree.selectedRowAtIndex(1);
return (selectedRow1 && selectedRow1.isEqual(treeitem1)) && (selectedRow2 && selectedRow2.isEqual(treeitem2));
})
testOutput += expect("selectedRow1.isEqual(treeitem1)", "true");
testOutput += expect("selectedRow2.isEqual(treeitem2)", "true");
// Test that if one of the items becomes de-selected, we still get the right selected row.
document.getElementById("treeitem1").setAttribute("aria-selected", false);
await waitFor(() => {
selectedRow1 = tree.selectedRowAtIndex(0);
return selectedRow1 && selectedRow1.isEqual(treeitem2);
})
testOutput += expect("selectedRow1.isEqual(treeitem2)", "true");
debug(testOutput);
finishJSTest();
}, 0);
}
</script>
</body>
</html>