| <!DOCTYPE html> | |
| <html> | |
| <body> | |
| <script src="../../resources/js-test.js"></script> | |
| <script src="../../resources/accessibility-helper.js"></script> | |
| <custom-tab id="custom-tab-1"></custom-tab> | |
| <div class="control">Panel 1</div> | |
| <div class="control">Panel 2</div> | |
| <custom-tab id="custom-tab-2" aria-controls="panel3"></custom-tab> | |
| <div id="panel3" class="control">Panel 3</div> | |
| <div id="panel4" class="control">Panel 4</div> | |
| <script> | |
| customElements.define('custom-tab', class CustomElement extends HTMLElement { | |
| constructor() | |
| { | |
| super(); | |
| const internals = this.attachInternals(); | |
| internals.role = 'tab'; | |
| internals.ariaControlsElements = Array.from(document.querySelectorAll('.control')); | |
| } | |
| }); | |
| description("This tests that aria fallback roles work correctly."); | |
| if (!window.accessibilityController) | |
| debug('This test requires accessibilityController'); | |
| else { | |
| function labelForControl(control) { | |
| if (accessibilityController.platformName == "mac") | |
| return control.childAtIndex(0).stringValue; | |
| return control.stringValue; | |
| } | |
| shouldBeEqualToString('labelForControl(accessibilityController.accessibleElementById("custom-tab-1").ariaControlsElementAtIndex(0))', 'AXValue: Panel 1'); | |
| shouldBeEqualToString('labelForControl(accessibilityController.accessibleElementById("custom-tab-1").ariaControlsElementAtIndex(1))', 'AXValue: Panel 2'); | |
| shouldBeEqualToString('labelForControl(accessibilityController.accessibleElementById("custom-tab-2").ariaControlsElementAtIndex(0))', 'AXValue: Panel 3'); | |
| shouldBe('accessibilityController.accessibleElementById("custom-tab-2").ariaControlsElementAtIndex(1)', 'null'); | |
| } | |
| </script> | |
| </body> | |
| </html> |