REGRESSION(r184899): Crash when focusing an input element styled with a web font
[WebKit-https.git] / LayoutTests / platform / mac / accessibility / aria-multiple-liveregions-notification.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../../../resources/js-test-pre.js"></script>
5 </head>
6 <body id="body">
7
8 <div role="group" tabindex=0 id="liveregion1" aria-live="polite" aria-relevant="additions">
9 <h3 id="innerlive">text</h3>
10 </div>
11
12 <div role="group" tabindex=0 id="liveregion2" aria-live="polite" aria-relevant="additions">
13 <img src="test.gif" width=100 height=100 alt="alt text" tabindex=0 id="image">
14 </div>
15
16 <p id="description"></p>
17 <div id="console"></div>
18
19 <script>
20     var jsTestIsAsync = true;
21
22     description("This tests that ARIA live regions are sending out the correct notifications. We perform two operations to each aria region, at the end it should trigger two live region notifications");
23
24     var liveRegion1 = 0;
25     var liveRegion2 = 0;
26     var liveRegionChangeCount = 0;
27     function ariaCallback(notification) {
28         if (notification == "AXLiveRegionChanged") {
29             liveRegionChangeCount++;
30         }
31     }
32
33     if (window.accessibilityController) {
34
35         liveRegion1 = accessibilityController.accessibleElementById("liveregion1");
36         var addedNotification1 = liveRegion1.addNotificationListener(ariaCallback);
37         shouldBe("addedNotification1", "true");
38
39         liveRegion2 = accessibilityController.accessibleElementById("liveregion2");
40         var addedNotification2 = liveRegion2.addNotificationListener(ariaCallback);
41         shouldBe("addedNotification2", "true");
42
43         // perform operations on both live regions.
44         textChangeOperation();
45         newElementOperation();
46         alternativeChangeOperation();
47         removeElementOperation();
48
49         // add a short delay to check after all the operations if we have exactly two notificaitons
50         setTimeout("finishTest()", 10);
51     }
52
53     function textChangeOperation() {
54         // this should trigger a live region change for a text change.
55         document.getElementById("innerlive").innerText = "changed text";
56     }
57
58     function newElementOperation() {
59         // this should trigger a live region change for a new element.
60         document.getElementById("liveregion1").innerHTML += "new text element";
61     }
62
63     function alternativeChangeOperation() {
64         // this should also trigger a live region change because its a text alternative change. 
65         document.getElementById("image").setAttribute('alt', "new image text");
66     }
67
68     function removeElementOperation() {
69         // this should trigger a live region change for a removed element.
70         document.getElementById("liveregion2").removeChild(document.getElementById("image")); 
71     }
72
73     function finishTest() {
74         // We should get a total of two live region changes.
75         liveRegion1.removeNotificationListener();
76         liveRegion2.removeNotificationListener();
77         shouldBeTrue("liveRegionChangeCount == 2");
78         finishJSTest();
79     }
80 </script>
81
82 <script src="../../../resources/js-test-post.js"></script>
83 </body>
84 </html>