|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <title>Tests pivot functionality in virtual cursors</title> |
|
5 <meta charset="utf-8" /> |
|
6 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> |
|
7 |
|
8 <script type="application/javascript" |
|
9 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"> |
|
10 </script> |
|
11 <script type="application/javascript" |
|
12 src="chrome://mochikit/content/chrome-harness.js"> |
|
13 </script> |
|
14 |
|
15 <script type="application/javascript" src="../common.js"></script> |
|
16 <script type="application/javascript" src="../text.js"></script> |
|
17 <script type="application/javascript" src="../browser.js"></script> |
|
18 <script type="application/javascript" src="../events.js"></script> |
|
19 <script type="application/javascript" src="../role.js"></script> |
|
20 <script type="application/javascript" src="../states.js"></script> |
|
21 <script type="application/javascript" src="../pivot.js"></script> |
|
22 <script type="application/javascript" src="../layout.js"></script> |
|
23 |
|
24 <script type="application/javascript"> |
|
25 var gBrowserWnd = null; |
|
26 var gQueue = null; |
|
27 |
|
28 function doTest() |
|
29 { |
|
30 var doc = currentTabDocument(); |
|
31 var docAcc = getAccessible(doc, [nsIAccessibleDocument]); |
|
32 |
|
33 gQueue = new eventQueue(); |
|
34 |
|
35 gQueue.onFinish = function onFinish() |
|
36 { |
|
37 closeBrowserWindow(); |
|
38 } |
|
39 |
|
40 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
41 getAccessible(doc.getElementById('paragraph-1')))); |
|
42 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,4], |
|
43 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
44 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [4,5], |
|
45 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
46 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', CHAR_BOUNDARY, [3,4], |
|
47 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
48 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [5,7], |
|
49 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
50 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,3], |
|
51 getAccessible(doc.getElementById('p1-link-1'), nsIAccessibleText))); |
|
52 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [10,14], |
|
53 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
54 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,3], |
|
55 getAccessible(doc.getElementById('p1-link-1'), nsIAccessibleText))); |
|
56 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [5,7], |
|
57 getAccessible(doc.getElementById('paragraph-1'), nsIAccessibleText))); |
|
58 |
|
59 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
60 getAccessible(doc.getElementById('section-1')))); |
|
61 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,1], |
|
62 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
63 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,9], |
|
64 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
65 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [10,14], |
|
66 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
67 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [4,6], |
|
68 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
69 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [7,12], |
|
70 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
71 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,2], |
|
72 getAccessible(doc.getElementById('s1-link-2'), nsIAccessibleText))); |
|
73 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [15,19], |
|
74 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
75 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [20,28], |
|
76 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
77 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,5], |
|
78 getAccessible(doc.getElementById('section-2'), nsIAccessibleText))); |
|
79 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [6,10], |
|
80 getAccessible(doc.getElementById('section-2'), nsIAccessibleText))); |
|
81 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,5], |
|
82 getAccessible(doc.getElementById('section-2'), nsIAccessibleText))); |
|
83 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [20,28], |
|
84 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
85 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [15,19], |
|
86 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
87 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,2], |
|
88 getAccessible(doc.getElementById('s1-link-2'), nsIAccessibleText))); |
|
89 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [7,12], |
|
90 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
91 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [4,6], |
|
92 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
93 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [10,14], |
|
94 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
95 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,9], |
|
96 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
97 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,1], |
|
98 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
99 |
|
100 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
101 getAccessible(doc.getElementById('s1-link-1')))); |
|
102 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', CHAR_BOUNDARY, [1,2], |
|
103 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
104 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', CHAR_BOUNDARY, [0,1], |
|
105 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
106 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [1,2], |
|
107 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
108 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [0,1], |
|
109 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
110 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [1,2], |
|
111 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
112 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [2,9], |
|
113 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
114 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [10,14], |
|
115 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
116 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [3,4], |
|
117 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
118 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', CHAR_BOUNDARY, [13,14], |
|
119 getAccessible(doc.getElementById('s1-link-1'), nsIAccessibleText))); |
|
120 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
121 getAccessible(doc.getElementById('section-2')))); |
|
122 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', CHAR_BOUNDARY, [27,28], |
|
123 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
124 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', CHAR_BOUNDARY, [0,1], |
|
125 getAccessible(doc.getElementById('section-2'), nsIAccessibleText))); |
|
126 |
|
127 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
128 getAccessible(doc.getElementById('paragraph-2')))); |
|
129 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,12], |
|
130 getAccessible(doc.getElementById('paragraph-2'), nsIAccessibleText))); |
|
131 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,7], |
|
132 getAccessible(doc.getElementById('cell-1'), nsIAccessibleText))); |
|
133 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,8], |
|
134 getAccessible(doc.getElementById('cell-2'), nsIAccessibleText))); |
|
135 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,3], |
|
136 getAccessible(doc.getElementById('cell-3'), nsIAccessibleText))); |
|
137 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [4,11], |
|
138 getAccessible(doc.getElementById('cell-3'), nsIAccessibleText))); |
|
139 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,6], |
|
140 getAccessible(doc.getElementById('cell-4'), nsIAccessibleText))); |
|
141 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [7,13], |
|
142 getAccessible(doc.getElementById('cell-4'), nsIAccessibleText))); |
|
143 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,7], |
|
144 getAccessible(doc.getElementById('section-3'), nsIAccessibleText))); |
|
145 |
|
146 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
147 getAccessible(doc.getElementById('section-3')))); |
|
148 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,7], |
|
149 getAccessible(doc.getElementById('section-3'), nsIAccessibleText))); |
|
150 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [7,13], |
|
151 getAccessible(doc.getElementById('cell-4'), nsIAccessibleText))); |
|
152 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,6], |
|
153 getAccessible(doc.getElementById('cell-4'), nsIAccessibleText))); |
|
154 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [4,11], |
|
155 getAccessible(doc.getElementById('cell-3'), nsIAccessibleText))); |
|
156 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,3], |
|
157 getAccessible(doc.getElementById('cell-3'), nsIAccessibleText))); |
|
158 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,8], |
|
159 getAccessible(doc.getElementById('cell-2'), nsIAccessibleText))); |
|
160 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,7], |
|
161 getAccessible(doc.getElementById('cell-1'), nsIAccessibleText))); |
|
162 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,12], |
|
163 getAccessible(doc.getElementById('paragraph-2'), nsIAccessibleText))); |
|
164 |
|
165 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
166 getAccessible(doc.getElementById('paragraph-3')))); |
|
167 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,7], |
|
168 getAccessible(doc.getElementById('paragraph-3'), nsIAccessibleText))); |
|
169 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,8], |
|
170 getAccessible(doc.getElementById('p3-link-1'), nsIAccessibleText))); |
|
171 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [8,10], |
|
172 getAccessible(doc.getElementById('paragraph-3'), nsIAccessibleText))); |
|
173 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,4], |
|
174 getAccessible(doc.getElementById('p3-link-2'), nsIAccessibleText))); |
|
175 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,5], |
|
176 getAccessible(doc.getElementById('p3-link-3'), nsIAccessibleText))); |
|
177 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [14,20], |
|
178 getAccessible(doc.getElementById('paragraph-3'), nsIAccessibleText))); |
|
179 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,5], |
|
180 getAccessible(doc.getElementById('p3-link-3'), nsIAccessibleText))); |
|
181 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,4], |
|
182 getAccessible(doc.getElementById('p3-link-2'), nsIAccessibleText))); |
|
183 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [8,10], |
|
184 getAccessible(doc.getElementById('paragraph-3'), nsIAccessibleText))); |
|
185 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,8], |
|
186 getAccessible(doc.getElementById('p3-link-1'), nsIAccessibleText))); |
|
187 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,7], |
|
188 getAccessible(doc.getElementById('paragraph-3'), nsIAccessibleText))); |
|
189 |
|
190 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
191 getAccessible(doc.getElementById('s1-link-2')))); |
|
192 // Start with the pivot in the middle of the paragraph |
|
193 gQueue.push(new setVCPosInvoker(docAcc, "moveNext", ObjectTraversalRule, " will traverse")); |
|
194 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [15,19], |
|
195 getAccessible(doc.getElementById('section-1'), nsIAccessibleText))); |
|
196 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, [0,2], |
|
197 getAccessible(doc.getElementById('s1-link-2'), nsIAccessibleText))); |
|
198 |
|
199 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
200 getAccessible(doc.getElementById('end-block')))); |
|
201 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,4], |
|
202 getAccessible(doc.getElementById('end-block'), nsIAccessibleText))); |
|
203 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, null, false)); |
|
204 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
205 getAccessible(doc.getElementById('start-block')))); |
|
206 gQueue.push(new setVCTextInvoker(docAcc, 'moveNextByText', WORD_BOUNDARY, [0,4], |
|
207 getAccessible(doc.getElementById('start-block'), nsIAccessibleText))); |
|
208 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, null, false)); |
|
209 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, null, false)); |
|
210 gQueue.push(new setVCPosInvoker(docAcc, null, null, |
|
211 getAccessible(doc.getElementById('start-block')))); |
|
212 gQueue.push(new setVCTextInvoker(docAcc, 'movePreviousByText', WORD_BOUNDARY, null, false)); |
|
213 |
|
214 gQueue.invoke(); |
|
215 } |
|
216 |
|
217 SimpleTest.waitForExplicitFinish(); |
|
218 addLoadEvent(function () { |
|
219 /* We open a new browser because we need to test with a top-level content |
|
220 document. */ |
|
221 openBrowserWindow( |
|
222 doTest, |
|
223 getRootDirectory(window.location.href) + "doc_virtualcursor_text.html"); |
|
224 }); |
|
225 </script> |
|
226 </head> |
|
227 <body id="body"> |
|
228 |
|
229 <a target="_blank" |
|
230 title="Support Movement By Granularity" |
|
231 href="https://bugzilla.mozilla.org/show_bug.cgi?id=886076">Mozilla Bug 886076</a> |
|
232 <p id="display"></p> |
|
233 <div id="content" style="display: none"></div> |
|
234 <pre id="test"> |
|
235 </pre> |
|
236 </body> |
|
237 </html> |