blob: ccce16b93dd9f23071abe09306b58aa3d31025e0 [file] [log] [blame] [edit]
<!DOCTYPE html>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<div id="flow1">First flow</div>
<div id="target1">Target 1</div>
<div id="wrapper" tabindex="0">
<div class="flow">Second flow</div>
</div>
<div id="target2">Target 2</div>
<div id="flow3">Third flow</div>
<x-target></x-target>
<div id="flow4">Fourth flow</div>
<div id="target4">Target 4</div>
<x-custom></x-custom>
<script>
class XTarget extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
let target = document.createElement("div");
target.id = "innertarget";
target.textContent = "Target 3";
target.ariaFlowToElements = [flow3];
this.shadowRoot.appendChild(target);
}
}
customElements.define("x-target", XTarget);
class XCustom extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
let flow = document.createElement("div");
flow.id = "flow5";
flow.textContent = "Fifth flow";
let target = document.createElement("div");
target.id = "target5";
target.textContent = "Target 5";
this.shadowRoot.appendChild(flow);
this.shadowRoot.appendChild(target);
target.ariaFlowToElements = [flow];
document.body.appendChild(flow);
}
}
customElements.define("x-custom", XCustom);
var output = "Checks that element reflection is exposed to the a11y tree for 'ariaFlowToElements'\n\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true
var axFlow1, axTarget1, axTarget2, axFlow2, axFlow3, axInnerTarget, axFlow4, axTarget4, wrapper;
setTimeout(async function() {
target1.ariaFlowToElements = [flow1];
axFlow1 = accessibilityController.accessibleElementById("flow1");
axTarget1 = accessibilityController.accessibleElementById("target1");
await waitFor(() => axTarget1.ariaFlowToElementAtIndex(0));
output += expect("axTarget1.ariaFlowToElementAtIndex(0).isEqual(axFlow1)", "true");
target2.ariaFlowToElements = [document.getElementsByClassName("flow")[0]];
wrapper = accessibilityController.accessibleElementById("wrapper");
axFlow2 = wrapper.childAtIndex(0);
axTarget2 = accessibilityController.accessibleElementById("target2");
await waitFor(() => axTarget2.ariaFlowToElementAtIndex(0));
output += expect("axTarget2.ariaFlowToElementAtIndex(0).isEqual(axFlow2)", "true");
target2.setAttribute("aria-flowto", "flow1");
await waitFor(() => axTarget2.ariaFlowToElementAtIndex(0).isEqual(axFlow1));
output += expect("axTarget2.ariaFlowToElementAtIndex(0).isEqual(axFlow1)", "true");
axFlow3 = accessibilityController.accessibleElementById("flow3");
axInnerTarget = accessibilityController.accessibleElementById("innertarget");
output += expect("axInnerTarget.ariaFlowToElementAtIndex(0).isEqual(axFlow3)", "true");
target2.ariaFlowToElements = [flow1, document.getElementsByClassName("flow")[0], flow3];
await waitFor(() => axTarget2.ariaFlowToElementAtIndex(2));
output += expect("axTarget2.ariaFlowToElementAtIndex(0).isEqual(axFlow1)", "true");
output += expect("axTarget2.ariaFlowToElementAtIndex(1).isEqual(axFlow2)", "true");
output += expect("axTarget2.ariaFlowToElementAtIndex(2).isEqual(axFlow3)", "true");
target4.ariaFlowToElements = [flow4];
flow4.id = "flow4-new";
axFlow4 = accessibilityController.accessibleElementById("flow4-new");
axTarget4 = accessibilityController.accessibleElementById("target4");
await waitFor(() => axTarget4.ariaFlowToElementAtIndex(0));
output += expect("axTarget4.ariaFlowToElementAtIndex(0).isEqual(axFlow4)", "true");
axFlow5 = accessibilityController.accessibleElementById("flow5");
axTarget5 = accessibilityController.accessibleElementById("target5");
output += expect("axTarget5.ariaFlowToElementAtIndex(0).isEqual(axFlow5)", "true");
debug(output);
finishJSTest();
}, 0);
}
</script>