Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / accessibility / aria-invalid.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 </head>
6 <body id="body">
7
8 <div id="examples">
9     <!-- All of these eval to AXInvalid: 'false' -->
10     <input class="ex" data-expected="false" type="text">
11     <input class="ex" data-expected="false" type="text" aria-invalid>
12     <input class="ex" data-expected="false" type="text" aria-invalid="">
13     <input class="ex" data-expected="false" type="text" aria-invalid=" ">
14     <input class="ex" data-expected="false" type="text" aria-invalid="  "><!-- [sic] tab char -->
15     <input class="ex" data-expected="false" type="text" aria-invalid="
16     "><!-- [sic] newline char -->
17     <input class="ex" data-expected="false" type="text" aria-invalid="false">
18     <input class="ex" data-expected="false" type="text" aria-invalid="undefined">
19
20     <!-- Known token values in ARIA 1.0. -->
21     <input class="ex" data-expected="grammar" type="text" aria-invalid="grammar">
22     <input class="ex" data-expected="grammar" type="text" aria-invalid="grammar "><!-- [sic] tab char -->
23     <input class="ex" data-expected="spelling" type="text" aria-invalid="spelling">
24     <input class="ex" data-expected="spelling" type="text" aria-invalid="spelling
25     "><!-- [sic] newline char -->
26
27     <!-- All other string values are truthy, including a combination of otherwise valid tokens. -->
28     <input class="ex" data-expected="true" type="text" aria-invalid="true">
29     <input class="ex" data-expected="true" type="text" aria-invalid="notallowed">
30     <input class="ex" data-expected="true" type="text" aria-invalid="…">
31     <input class="ex" data-expected="true" type="text" aria-invalid="Ç">
32     <input class="ex" data-expected="true" type="text" aria-invalid="spelling grammar">
33     <input class="ex" data-expected="true" type="text" aria-invalid="spelling   grammar"><!-- [sic] tab char -->
34     <input class="ex" data-expected="true" type="text" aria-invalid="spelling
35     grammar"><!-- [sic] newline char -->
36 </div>
37
38 <p id="description"></p>
39 <div id="console"></div>
40 <div id="notifications"></div>
41
42 <script>
43
44     description("This tests that aria-invalid causes the right attribute to be returned and it ensures a notification is sent when it changes.");
45
46     function $(id){
47         return document.getElementById(id);
48     }
49
50     var axNotificationElement = null;
51     function notificationCallback(notification) {
52         if (notification == "AXInvalidStatusChanged") {
53             $("notifications").innerHTML += "Notification received successfully.";
54             axNotificationElement.removeNotificationListener();
55             $("examples").hidden = true;
56             finishJSTest();
57         }
58     }
59
60     var result = $('console');
61     function verify(value, expectation, element) {
62       if (value === expectation)
63         result.innerText += "PASS: AXInvalid is " + value + ".\n";
64       else
65         result.innerText += "FAIL: AXInvalid is " + value + ". Expected: " + expectation + ". " + (element ? element.outerHTML : "") + "\n";
66     }
67
68     if (window.accessibilityController) {
69         jsTestIsAsync = true;
70
71         var examples = document.querySelectorAll(".ex");
72         for (var i = 0, c = examples.length; i < c; i++) {
73             var el = examples[i];
74             el.focus();
75             var expectation = el.getAttribute("data-expected");
76             var value = accessibilityController.focusedElement.stringAttributeValue('AXInvalid');
77             verify(value, expectation, el);
78         }
79         
80         var domNotificationElement = document.querySelector(".ex");
81         domNotificationElement.focus();
82         axNotificationElement = accessibilityController.focusedElement;
83         var addedNotification = axNotificationElement.addNotificationListener(notificationCallback);
84         shouldBeTrue("addedNotification");
85         domNotificationElement.setAttribute("aria-invalid", "spelling");
86         verify(axNotificationElement.stringAttributeValue('AXInvalid'), "spelling", domNotificationElement);
87     }
88
89 </script>
90 </body>
91 </html>