blob: 8c20ff944295879763b25ff0303e11123140ff5d [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>
<div id="content">
<div id="menu1" role="menu" aria-label="First menu">
<div role="menuitem" id="item1" aria-label="item 1" tabindex="-1">Menu item 1</div>
<div role="menuitem" id="item2" aria-label="item 2" tabindex="0">Menu item 2</div>
<div role="menuitem" id="item3" aria-label="item 3" tabindex="-1">Menu item 3</div>
</div>
<div id="menu2" role="menu" aria-label="Second menu" aria-activedescendant="item5">
<div role="menuitemcheckbox" id="item4" aria-label="item 4" tabindex="-1">Menu item 4</div>
<div role="menuitemcheckbox" id="item5" aria-label="item 5" tabindex="-1">Menu item 5</div>
<div role="menuitemcheckbox" id="item6" aria-label="item 6" tabindex="-1">Menu item 6</div>
</div>
<div id="menubar1" role="menubar" aria-label="First menubar">
<div role="menuitem" id="item7" aria-label="File" tabindex="-1">File</div>
<div role="menuitem" id="item8" aria-label="Edit" tabindex="0">Edit</div>
<div role="menuitem" id="item9" aria-label="View" tabindex="-1">View</div>
</div>
<div id="menubar2" role="menubar" aria-label="Second menubar" aria-activedescendant="item12">
<div role="menuitem" id="item10" aria-label="File" tabindex="-1">File</div>
<div role="menuitem" id="item11" aria-label="Edit" tabindex="-1">Edit</div>
<div role="menuitem" id="item12" aria-label="View" tabindex="-1">View</div>
</div>
</div>
<script>
testOutput = "This tests that focused/active menu items are reported as selected children of the parent container.\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true;
document.getElementById("item2").focus();
setTimeout(async () => {
await focus("item2");
testOutput += await selectedChildInfo(accessibilityController.accessibleElementById("menu1"), "item2");
testOutput += await selectedChildInfo(accessibilityController.accessibleElementById("menu2"), "item5");
await focus("item8");
testOutput += await selectedChildInfo(accessibilityController.accessibleElementById("menubar1"), "item8");
testOutput += await selectedChildInfo(accessibilityController.accessibleElementById("menubar2"), "item12");
document.getElementById("content").style.visibility = "hidden";
debug(testOutput);
finishJSTest();
}, 0);
}
async function selectedChildInfo(axElement, expectedChildId) {
result = ""
if (!axElement)
result += "Element not exposed";
var count = axElement.selectedChildrenCount;
result += `${platformValueForW3CName(axElement)} has ${count} selected child(ren)\n`;
for (var i = 0; i < count; i++) {
await waitFor(() => axElement.selectedChildAtIndex(i).domIdentifier == expectedChildId)
var child = axElement.selectedChildAtIndex(i);
result += `\t${platformValueForW3CName(child)} (${child.role})`;
result += ` isSelectable: ${child.isSelectable} isSelected: ${child.isSelected}\n`;
}
return result;
}
async function focus(id) {
document.getElementById(id).focus();
await waitFor(() => accessibilityController.focusedElement.domIdentifier === id);
}
</script>
</body>
</html>