blob: 56c26617f52275b28814fa734437103ec7ba81aa [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>
<!-- Testcase for element with renderer. -->
<button id="button">Click me</button>
<!-- Testcase for element with no renderer. -->
<canvas id="canvas" tabindex="0">
<div aria-label="Some canvas fallback content" role="group">
Foo
</div>
</canvas>
<!-- When the bug preventing display:contents elements from gaining focus is fixed, we should add a testcase for that too. -->
<script>
var testOutput = "This test ensures you can set focus to AX elements via the AX API (not the DOM).\n\n";
function checkFocusState() {
testOutput += `#button isFocused: ${accessibilityController.accessibleElementById("button").isFocused}\n`;
testOutput += `#canvas isFocused: ${accessibilityController.accessibleElementById("canvas").isFocused}\n`;
}
async function waitForFocusOf(id) {
testOutput += `\nFocusing #${id}.\n`;
const axElement = accessibilityController.accessibleElementById(id);
axElement.takeFocus();
await waitFor(() => {
const focusedElement = accessibilityController.focusedElement;
return focusedElement && focusedElement.domIdentifier == axElement.domIdentifier;
});
checkFocusState();
}
if (window.accessibilityController) {
window.jsTestIsAsync = true;
testOutput += "Checking initial button focus state.\n";
checkFocusState();
setTimeout(async function() {
await waitForFocusOf("button");
await waitForFocusOf("canvas");
debug(testOutput);
finishJSTest();
}, 0);
}
</script>
</body>
</html>