| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body id="body"> |
| |
| <div tabindex=0 id="listbox" role="listbox"> |
| <div id="option1" role="option" aria-selected="true">Option</div> |
| <div id="option2" role="option">Option</div> |
| <div id="option3" role="option">Option</div> |
| </div> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| |
| description("This tests that when aria-selected is changed in a listbox, the correct notification is sent."); |
| |
| var listbox = 0; |
| var notificationCount = 0; |
| function ariaCallback(element, notification) { |
| if (notification == "AXSelectedChildrenChanged") { |
| notificationCount++; |
| |
| // We should get a total of 4 live region changes. |
| if (notificationCount == 2) { |
| window.accessibilityController.removeNotificationListener(); |
| finishJSTest(); |
| } |
| } |
| } |
| |
| if (window.accessibilityController) { |
| jsTestIsAsync = true; |
| |
| listbox = accessibilityController.accessibleElementById("listbox"); |
| |
| var addedNotification = window.accessibilityController.addNotificationListener(ariaCallback); |
| shouldBe("addedNotification", "true"); |
| |
| // These should each trigger a notification that the selected children changed. |
| document.getElementById("option2").setAttribute("aria-selected", "true"); |
| setTimeout(function() { |
| document.getElementById("option2").setAttribute("aria-selected", "false"); |
| }, 1); |
| } |
| |
| </script> |
| </body> |
| </html> |