blob: afc960ead524689558ca49c24d76384553b1dc79 [file] [edit]
<!DOCTYPE html><!-- webkit-test-runner [ IsAccessibilityIsolatedTreeEnabled=true ] -->
<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>