blob: ae0cfdc4d7258bf492058e746e569ce5cf80c138 [file] [edit]
<!DOCTYPE html>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<div id="detail1">First detail</div>
<div id="target1">Target 1</div>
<div id="wrapper" tabindex="0">
<div class="detail">Second detail</div>
</div>
<div id="target2">Target 2</div>
<div id="detail3">Third detail</div>
<x-target></x-target>
<div id="detail4">Fourth detail</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.ariaDetailsElements = [detail3];
this.shadowRoot.appendChild(target);
}
}
customElements.define("x-target", XTarget);
class XCustom extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
let detail = document.createElement("div");
detail.id = "detail5";
detail.textContent = "Fifth detail";
let target = document.createElement("div");
target.id = "target5";
target.textContent = "Target 5";
this.shadowRoot.appendChild(detail);
this.shadowRoot.appendChild(target);
target.ariaDetailsElements = [detail];
document.body.appendChild(detail);
}
}
customElements.define("x-custom", XCustom);
description("Checks that element reflection is exposed to the a11y tree for 'ariaDetailsElements'");
if (!window.accessibilityController) {
debug("This test requires accessibilityController");
} else {
target1.ariaDetailsElements = [detail1];
var axDetail1 = accessibilityController.accessibleElementById("detail1");
var axTarget1 = accessibilityController.accessibleElementById("target1");
shouldBeTrue("axTarget1.ariaDetailsElementAtIndex(0).isEqual(axDetail1)");
target2.ariaDetailsElements = [document.getElementsByClassName("detail")[0]];
var wrapper = accessibilityController.accessibleElementById("wrapper");
var axDetail2 = wrapper.childAtIndex(0);
var axTarget2 = accessibilityController.accessibleElementById("target2");
shouldBeTrue("axTarget2.ariaDetailsElementAtIndex(0).isEqual(axDetail2)");
target2.setAttribute("aria-details", "detail1");
shouldBeTrue("axTarget2.ariaDetailsElementAtIndex(0).isEqual(axDetail1)");
var axDetail3 = accessibilityController.accessibleElementById("detail3");
var axInnerTarget = accessibilityController.accessibleElementById("innertarget");
shouldBeTrue("axInnerTarget.ariaDetailsElementAtIndex(0).isEqual(axDetail3)");
target2.ariaDetailsElements = [detail1, document.getElementsByClassName("detail")[0], detail3];
shouldBeTrue("axTarget2.ariaDetailsElementAtIndex(0).isEqual(axDetail1)");
shouldBeTrue("axTarget2.ariaDetailsElementAtIndex(1).isEqual(axDetail2)");
shouldBeTrue("axTarget2.ariaDetailsElementAtIndex(2).isEqual(axDetail3)");
target4.ariaDetailsElements = [detail4];
detail4.id = "detail4-new";
var axDetail4 = accessibilityController.accessibleElementById("detail4-new");
var axTarget4 = accessibilityController.accessibleElementById("target4");
shouldBeTrue("axTarget4.ariaDetailsElementAtIndex(0).isEqual(axDetail4)");
var axDetail5 = accessibilityController.accessibleElementById("detail5");
var axTarget5 = accessibilityController.accessibleElementById("target5");
shouldBeTrue("axTarget5.ariaDetailsElementAtIndex(0).isEqual(axDetail5)");
}
</script>