| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../resources/run-after-layout-and-paint.js"></script> |
| </head> |
| <body> |
| |
| <div id="container"> |
| <button id="aria-label" aria-label="Aria Label">Content</button> |
| <button id="title" title="Title">Content</button> |
| <button id="labelledby" aria-labelledby="label1">Content</button> |
| <button id="labeled">Content</button> |
| |
| <label id="label1">Label1</label> |
| <label id="label2">Label2</label> |
| </div> |
| |
| <script> |
| async_test_after_layout_and_paint((t) => { |
| function accessibleElementById(id) { |
| return accessibilityController.accessibleElementById(id); |
| } |
| |
| window.successCount = 0; |
| gotSuccessfulNotification = t.step_func(() => { |
| successCount++; |
| if (successCount != 4) |
| return; |
| |
| console.log('All notifications received successfully.'); |
| accessibleElementById('aria-label').removeNotificationListener(); |
| accessibleElementById('title').removeNotificationListener(); |
| accessibleElementById('labelledby').removeNotificationListener(); |
| accessibleElementById('labeled').removeNotificationListener(); |
| |
| t.done(); |
| }); |
| |
| accessibleElementById('aria-label').addNotificationListener(function(notification) { |
| assert_equals(notification, 'TextChanged'); |
| gotSuccessfulNotification(); |
| }); |
| document.getElementById('aria-label').setAttribute('aria-label', 'New aria-label'); |
| |
| accessibleElementById('title').addNotificationListener(function(notification) { |
| assert_equals(notification, 'TextChanged'); |
| gotSuccessfulNotification(); |
| }); |
| document.getElementById('title').title = 'New title'; |
| |
| accessibleElementById('labelledby').addNotificationListener(function(notification) { |
| assert_equals(notification, 'TextChanged'); |
| gotSuccessfulNotification(); |
| }); |
| document.getElementById('labelledby').setAttribute('aria-labelledby', 'label2'); |
| |
| accessibleElementById('labeled').addNotificationListener(function(notification) { |
| assert_equals(notification, 'TextChanged'); |
| gotSuccessfulNotification(); |
| }); |
| document.getElementById('label1').setAttribute('for', 'labeled'); |
| }, "This test ensures that a change to an element's accessible text, even if indirect, sends a notification."); |
| |
| </script> |
| |
| </body> |
| </html> |