blob: 690bfe0cda51e45cd2a8f51e8bc8f1443887d78c [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/accessibility-helper.js"></script>
<div class="control">Panel 1</div>
<div class="control">Panel 2</div>
<div id="host"></div>
<script>
class CustomTabElement extends HTMLElement {
constructor()
{
super();
window.internals = this.attachInternals();
internals.role = 'tab';
internals.ariaControlsElements = Array.from(document.querySelectorAll('.control'));
shouldBe('internals.ariaControlsElements.length', '2');
shouldBe('internals.ariaControlsElements[0]', 'document.querySelectorAll(".control")[0]');
shouldBe('internals.ariaControlsElements[1]', 'document.querySelectorAll(".control")[1]');
}
};
customElements.define('custom-tab', CustomTabElement);
const customElement = new CustomTabElement;
customElement.id = 'custom-tab';
const shadowRoot = host.attachShadow({'mode': 'closed'});
shadowRoot.appendChild(customElement);
description("This tests that ElementInternals.ariaControlsElements can reference nodes outside the shadow tree.");
if (!window.accessibilityController)
debug('This test requires accessibilityController');
else {
function labelForControl(control) {
if (accessibilityController.platformName == "mac")
return control.childAtIndex(0).stringValue;
return control.stringValue;
}
window.customTab = accessibilityController.accessibleElementById('custom-tab');
shouldBeEqualToString('labelForControl(customTab.ariaControlsElementAtIndex(0))', 'AXValue: Panel 1');
shouldBeEqualToString('labelForControl(customTab.ariaControlsElementAtIndex(1))', 'AXValue: Panel 2');
}
</script>
</body>
</html>