| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../resources/accessibility-helper.js"></script> |
| <script src="../resources/js-test.js"></script> |
| <style> |
| select, select::picker(select) { |
| appearance: base-select; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <select id="select"> |
| <option>Alpha</option> |
| <option selected>Bravo</option> |
| <option>Charlie</option> |
| </select> |
| |
| <script> |
| var output = "This test verifies accessibility notifications for base-appearance selects (appearance: base-select).\n\n"; |
| |
| if (window.accessibilityController) { |
| window.jsTestIsAsync = true; |
| |
| var select = accessibilityController.accessibleElementById("select"); |
| |
| setTimeout(async function() { |
| select.press(); |
| output += await expectAsync("select.isExpanded", "true"); |
| select.press(); |
| output += await expectAsync("select.isExpanded", "false"); |
| |
| output += expect("select.stringValue.includes('Bravo')", "true"); |
| |
| // Verify we post a notification when the selected item changes. |
| window.receivedNotification = false; |
| function listener(notification) { |
| if (notification == "AXMenuItemSelected") |
| window.receivedNotification = true; |
| } |
| select.addNotificationListener(listener); |
| |
| document.getElementById("select").selectedIndex = 2; |
| |
| output += await expectAsync("window.receivedNotification", "true"); |
| // We should not have to await this change -- the stringValue should be right at notification time. |
| output += expect("select.stringValue.includes('Charlie')", "true"); |
| |
| select.removeNotificationListener(listener); |
| |
| debug(output); |
| finishJSTest(); |
| }, 0); |
| } |
| </script> |
| </body> |
| </html> |