blob: d8a5a3f8c4cba1642f9834cbeb3a1fecf7a33c29 [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<body id="body">
<script src="../../resources/js-test.js"></script>
<script src="../../resources/accessibility-helper.js"></script>
<div role="button" class="flowto">FlowTo1</div>
<div id="flowto2" role="button" class="flowto">FlowTo2</div>
<div class="label">label 1</div>
<div id="label2" class="label">label 2</div>
<div id="host"></div>
<script>
class CustomElement extends HTMLElement {
constructor()
{
super();
window.internals = this.attachInternals();
internals.role = 'checkbox';
internals.ariaFlowToElements = Array.from(document.querySelectorAll('.flowto'));
internals.ariaLabelledByElements = Array.from(document.querySelectorAll('.label'));
shouldBe('internals.ariaFlowToElements.length', '2');
shouldBe('internals.ariaFlowToElements[0]', 'document.querySelectorAll(".flowto")[0]');
shouldBe('internals.ariaFlowToElements[1]', 'document.querySelectorAll(".flowto")[1]');
shouldBe('internals.ariaLabelledByElements.length', '2');
shouldBe('internals.ariaLabelledByElements[0]', 'document.querySelectorAll(".label")[0]');
shouldBe('internals.ariaLabelledByElements[1]', 'document.querySelectorAll(".label")[1]');
}
};
customElements.define('custom-element', CustomElement);
const shadowRoot = host.attachShadow({'mode': 'closed'});
const customElement = new CustomElement;
customElement.id = 'custom-1';
shadowRoot.appendChild(customElement);
description("This tests that aria fallback roles work correctly.");
if (!window.accessibilityController)
debug('This test requires accessibilityController');
else {
shouldBeEqualToString('accessibilityController.accessibleElementById("custom-1").role', 'AXRole: AXCheckBox');
shouldBeEqualToString('platformValueForW3CName(accessibilityController.accessibleElementById("custom-1"))', 'label 1 label 2');
shouldBeEqualToString('accessibilityController.accessibleElementById("custom-1").ariaFlowToElementAtIndex(0).role', 'AXRole: AXButton');
shouldBeEqualToString('accessibilityController.accessibleElementById("custom-1").ariaFlowToElementAtIndex(0).title', 'AXTitle: FlowTo1');
shouldBeEqualToString('accessibilityController.accessibleElementById("custom-1").ariaFlowToElementAtIndex(1).role', 'AXRole: AXButton');
shouldBeEqualToString('accessibilityController.accessibleElementById("custom-1").ariaFlowToElementAtIndex(1).title', 'AXTitle: FlowTo2');
shouldBe('accessibilityController.accessibleElementById("custom-1").ariaFlowToElementAtIndex(2)', 'null');
}
</script>
</body>
</html>