|
1 <html> |
|
2 |
|
3 <head> |
|
4 <title>HTML link states testing</title> |
|
5 |
|
6 <link rel="stylesheet" type="text/css" |
|
7 href="chrome://mochikit/content/tests/SimpleTest/test.css" /> |
|
8 |
|
9 <script type="application/javascript" |
|
10 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
11 <script type="application/javascript" |
|
12 src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> |
|
13 |
|
14 <script type="application/javascript" |
|
15 src="../common.js"></script> |
|
16 <script type="application/javascript" |
|
17 src="../role.js"></script> |
|
18 <script type="application/javascript" |
|
19 src="../states.js"></script> |
|
20 <script type="application/javascript" |
|
21 src="../events.js"></script> |
|
22 |
|
23 <script type="application/javascript"> |
|
24 //gA11yEventDumpToConsole = true; // debug stuff |
|
25 |
|
26 var gLinkWindow = null; |
|
27 function closeDocChecker() |
|
28 { |
|
29 this.__proto__ = new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE); |
|
30 |
|
31 this.check = function closeDocChecker_check(aEvent) |
|
32 { |
|
33 gLinkWindow = aEvent.accessible.rootDocument.window; |
|
34 } |
|
35 |
|
36 this.match = function closeDocChecker_match(aEvent) |
|
37 { |
|
38 // A temporary about:blank document gets loaded before 'example.com' |
|
39 // document. |
|
40 return aEvent.DOMNode.URL == "http://www.example.com/"; |
|
41 } |
|
42 } |
|
43 |
|
44 function clickLink(aID) |
|
45 { |
|
46 this.eventSeq = [ |
|
47 new stateChangeChecker(STATE_TRAVERSED, false, true, "link_traversed"), |
|
48 new closeDocChecker() |
|
49 ]; |
|
50 |
|
51 this.invoke = function clickLink_invoke() |
|
52 { |
|
53 synthesizeMouse(getNode("link_traversed"), 1, 1, { shiftKey: true }); |
|
54 } |
|
55 |
|
56 this.getID = function clickLink_getID() |
|
57 { |
|
58 return "link + '" + aID + "' clicked."; |
|
59 } |
|
60 } |
|
61 |
|
62 var gQueue = null; |
|
63 function doTest() |
|
64 { |
|
65 // a@href and its text node |
|
66 testStates("link_href", STATE_LINKED); |
|
67 testStates(getAccessible("link_href").firstChild, STATE_LINKED); |
|
68 |
|
69 // a@onclick |
|
70 testStates("link_click", STATE_LINKED); |
|
71 |
|
72 // a@onmousedown |
|
73 testStates("link_mousedown", STATE_LINKED); |
|
74 |
|
75 // a@onmouseup |
|
76 testStates("link_mouseup", STATE_LINKED); |
|
77 |
|
78 // a@role="link" |
|
79 testStates("link_arialink", STATE_LINKED); |
|
80 |
|
81 // a@role="button" |
|
82 testStates("link_ariabutton", 0, 0, STATE_LINKED); |
|
83 |
|
84 // a (no @href, no click event listener) |
|
85 testStates("link_notlink", 0, 0, STATE_LINKED); |
|
86 |
|
87 // a: no traversed state |
|
88 testStates("link_traversed", 0, 0, STATE_TRAVERSED); |
|
89 |
|
90 // a: traversed state |
|
91 //enableLogging("docload"); // debug stuff |
|
92 |
|
93 gQueue = new eventQueue(); |
|
94 gQueue.push(new clickLink("link_traversed")); |
|
95 gQueue.onFinish = |
|
96 function() |
|
97 { |
|
98 gLinkWindow.close(); |
|
99 //disableLogging(); // debug stuff |
|
100 } |
|
101 |
|
102 gQueue.invoke(); // will call SimpleTest.finsih(); |
|
103 } |
|
104 |
|
105 SimpleTest.waitForExplicitFinish(); |
|
106 addA11yLoadEvent(doTest); |
|
107 </script> |
|
108 |
|
109 </head> |
|
110 |
|
111 <body> |
|
112 |
|
113 <a target="_blank" |
|
114 href="https://bugzilla.mozilla.org/show_bug.cgi?id=423409" |
|
115 title="Expose click action if mouseup and mousedown are registered"> |
|
116 Mozilla Bug 423409 |
|
117 </a> |
|
118 <a target="_blank" |
|
119 href="https://bugzilla.mozilla.org/show_bug.cgi?id=754830" |
|
120 title="Calculate link states separately"> |
|
121 Mozilla Bug 754830 |
|
122 </a> |
|
123 <a target="_blank" |
|
124 href="https://bugzilla.mozilla.org/show_bug.cgi?id=757774" |
|
125 title="Fire state change event when link is traversed"> |
|
126 Mozilla Bug 757774 |
|
127 </a> |
|
128 <p id="display"></p> |
|
129 <div id="content" style="display: none"></div> |
|
130 <pre id="test"> |
|
131 </pre> |
|
132 |
|
133 <a id="link_href" href="http://mozilla.org">link</a> |
|
134 <a id="link_click" onclick="">link</a> |
|
135 <a id="link_mousedown" onmousedown="">link</a> |
|
136 <a id="link_mouseup" onmouseup="">link</a> |
|
137 <a id="link_arialink" role="link">aria link</a> |
|
138 <a id="link_ariabutton" role="button">aria button</a> |
|
139 <a id="link_notlink">not link</a> |
|
140 |
|
141 <a id="link_traversed" href="http://www.example.com" target="_top">example.com</a> |
|
142 |
|
143 </body> |
|
144 </html> |