Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/common/dom_predicates.js

Issue 924083004: Shorten Closure template notation from Array.<*> to Array<*> in cvox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview A bunch of predicates that take as input an array of 6 * @fileoverview A bunch of predicates that take as input an array of
7 * nodes with the unique ancestors of a node. They output true if a 7 * nodes with the unique ancestors of a node. They output true if a
8 * certain category of node has been found. 8 * certain category of node has been found.
9 * 9 *
10 */ 10 */
11 11
12 goog.provide('cvox.DomPredicates'); 12 goog.provide('cvox.DomPredicates');
13 13
14 14
15 /** 15 /**
16 * Checkbox. 16 * Checkbox.
17 * @param {Array.<Node>} nodes An array of nodes to check. 17 * @param {Array<Node>} nodes An array of nodes to check.
18 * @return {?Node} Node in the array that is a checkbox. 18 * @return {?Node} Node in the array that is a checkbox.
19 */ 19 */
20 cvox.DomPredicates.checkboxPredicate = function(nodes) { 20 cvox.DomPredicates.checkboxPredicate = function(nodes) {
21 for (var i = 0; i < nodes.length; i++) { 21 for (var i = 0; i < nodes.length; i++) {
22 if ((nodes[i].getAttribute && 22 if ((nodes[i].getAttribute &&
23 nodes[i].getAttribute('role') == 'checkbox') || 23 nodes[i].getAttribute('role') == 'checkbox') ||
24 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'checkbox')) { 24 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'checkbox')) {
25 return nodes[i]; 25 return nodes[i];
26 } 26 }
27 } 27 }
28 return null; 28 return null;
29 }; 29 };
30 30
31 31
32 /** 32 /**
33 * Radio button. 33 * Radio button.
34 * @param {Array.<Node>} nodes An array of nodes to check. 34 * @param {Array<Node>} nodes An array of nodes to check.
35 * @return {?Node} Node in the array that is a radio button. 35 * @return {?Node} Node in the array that is a radio button.
36 */ 36 */
37 cvox.DomPredicates.radioPredicate = function(nodes) { 37 cvox.DomPredicates.radioPredicate = function(nodes) {
38 for (var i = 0; i < nodes.length; i++) { 38 for (var i = 0; i < nodes.length; i++) {
39 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'radio') || 39 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'radio') ||
40 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'radio')) { 40 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'radio')) {
41 return nodes[i]; 41 return nodes[i];
42 } 42 }
43 } 43 }
44 return null; 44 return null;
45 }; 45 };
46 46
47 47
48 /** 48 /**
49 * Slider. 49 * Slider.
50 * @param {Array.<Node>} nodes An array of nodes to check. 50 * @param {Array<Node>} nodes An array of nodes to check.
51 * @return {?Node} Node in the array that is a slider. 51 * @return {?Node} Node in the array that is a slider.
52 */ 52 */
53 cvox.DomPredicates.sliderPredicate = function(nodes) { 53 cvox.DomPredicates.sliderPredicate = function(nodes) {
54 for (var i = 0; i < nodes.length; i++) { 54 for (var i = 0; i < nodes.length; i++) {
55 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'slider') || 55 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'slider') ||
56 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'range')) { 56 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'range')) {
57 return nodes[i]; 57 return nodes[i];
58 } 58 }
59 } 59 }
60 return null; 60 return null;
61 }; 61 };
62 62
63 63
64 /** 64 /**
65 * Graphic. 65 * Graphic.
66 * @param {Array.<Node>} nodes An array of nodes to check. 66 * @param {Array<Node>} nodes An array of nodes to check.
67 * @return {?Node} Node in the array that is a graphic. 67 * @return {?Node} Node in the array that is a graphic.
68 */ 68 */
69 cvox.DomPredicates.graphicPredicate = function(nodes) { 69 cvox.DomPredicates.graphicPredicate = function(nodes) {
70 for (var i = 0; i < nodes.length; i++) { 70 for (var i = 0; i < nodes.length; i++) {
71 if (nodes[i].tagName == 'IMG' || 71 if (nodes[i].tagName == 'IMG' ||
72 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'img')) { 72 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'img')) {
73 return nodes[i]; 73 return nodes[i];
74 } 74 }
75 } 75 }
76 return null; 76 return null;
77 }; 77 };
78 78
79 79
80 /** 80 /**
81 * Button. 81 * Button.
82 * @param {Array.<Node>} nodes An array of nodes to check. 82 * @param {Array<Node>} nodes An array of nodes to check.
83 * @return {?Node} Node in the array that is a button. 83 * @return {?Node} Node in the array that is a button.
84 */ 84 */
85 cvox.DomPredicates.buttonPredicate = function(nodes) { 85 cvox.DomPredicates.buttonPredicate = function(nodes) {
86 for (var i = 0; i < nodes.length; i++) { 86 for (var i = 0; i < nodes.length; i++) {
87 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'button') || 87 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'button') ||
88 nodes[i].tagName == 'BUTTON' || 88 nodes[i].tagName == 'BUTTON' ||
89 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'submit') || 89 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'submit') ||
90 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'button') || 90 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'button') ||
91 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'reset')) { 91 (nodes[i].tagName == 'INPUT' && nodes[i].type == 'reset')) {
92 return nodes[i]; 92 return nodes[i];
93 } 93 }
94 } 94 }
95 return null; 95 return null;
96 }; 96 };
97 97
98 98
99 /** 99 /**
100 * Combo box. 100 * Combo box.
101 * @param {Array.<Node>} nodes An array of nodes to check. 101 * @param {Array<Node>} nodes An array of nodes to check.
102 * @return {?Node} Node in the array that is a combo box. 102 * @return {?Node} Node in the array that is a combo box.
103 */ 103 */
104 cvox.DomPredicates.comboBoxPredicate = function(nodes) { 104 cvox.DomPredicates.comboBoxPredicate = function(nodes) {
105 for (var i = 0; i < nodes.length; i++) { 105 for (var i = 0; i < nodes.length; i++) {
106 if ((nodes[i].getAttribute && 106 if ((nodes[i].getAttribute &&
107 nodes[i].getAttribute('role') == 'combobox') || 107 nodes[i].getAttribute('role') == 'combobox') ||
108 nodes[i].tagName == 'SELECT') { 108 nodes[i].tagName == 'SELECT') {
109 return nodes[i]; 109 return nodes[i];
110 } 110 }
111 } 111 }
112 return null; 112 return null;
113 }; 113 };
114 114
115 115
116 /** 116 /**
117 * Editable text field. 117 * Editable text field.
118 * @param {Array.<Node>} nodes An array of nodes to check. 118 * @param {Array<Node>} nodes An array of nodes to check.
119 * @return {?Node} Node in the array that is an editable text field. 119 * @return {?Node} Node in the array that is an editable text field.
120 */ 120 */
121 cvox.DomPredicates.editTextPredicate = function(nodes) { 121 cvox.DomPredicates.editTextPredicate = function(nodes) {
122 for (var i = 0; i < nodes.length; i++) { 122 for (var i = 0; i < nodes.length; i++) {
123 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'textbox') || 123 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'textbox') ||
124 nodes[i].tagName == 'TEXTAREA' || 124 nodes[i].tagName == 'TEXTAREA' ||
125 nodes[i].isContentEditable || 125 nodes[i].isContentEditable ||
126 (nodes[i].tagName == 'INPUT' && 126 (nodes[i].tagName == 'INPUT' &&
127 cvox.DomUtil.isInputTypeText(nodes[i]))) { 127 cvox.DomUtil.isInputTypeText(nodes[i]))) {
128 return nodes[i]; 128 return nodes[i];
129 } 129 }
130 } 130 }
131 return null; 131 return null;
132 }; 132 };
133 133
134 134
135 /** 135 /**
136 * Heading. 136 * Heading.
137 * @param {Array.<Node>} nodes An array of nodes to check. 137 * @param {Array<Node>} nodes An array of nodes to check.
138 * @return {?Node} Node in the array that is a heading. 138 * @return {?Node} Node in the array that is a heading.
139 */ 139 */
140 cvox.DomPredicates.headingPredicate = function(nodes) { 140 cvox.DomPredicates.headingPredicate = function(nodes) {
141 for (var i = 0; i < nodes.length; i++) { 141 for (var i = 0; i < nodes.length; i++) {
142 if (nodes[i].getAttribute && 142 if (nodes[i].getAttribute &&
143 nodes[i].getAttribute('role') == 'heading') { 143 nodes[i].getAttribute('role') == 'heading') {
144 return nodes[i]; 144 return nodes[i];
145 } 145 }
146 switch (nodes[i].tagName) { 146 switch (nodes[i].tagName) {
147 case 'H1': 147 case 'H1':
148 case 'H2': 148 case 'H2':
149 case 'H3': 149 case 'H3':
150 case 'H4': 150 case 'H4':
151 case 'H5': 151 case 'H5':
152 case 'H6': 152 case 'H6':
153 return nodes[i]; 153 return nodes[i];
154 } 154 }
155 } 155 }
156 return null; 156 return null;
157 }; 157 };
158 158
159 159
160 /** 160 /**
161 * Heading level 1. 161 * Heading level 1.
162 * @param {Array.<Node>} nodes An array of nodes to check. 162 * @param {Array<Node>} nodes An array of nodes to check.
163 * @return {?Node} Node in the array that is a heading level 1. 163 * @return {?Node} Node in the array that is a heading level 1.
164 * TODO: handle ARIA headings with ARIA heading levels? 164 * TODO: handle ARIA headings with ARIA heading levels?
165 */ 165 */
166 cvox.DomPredicates.heading1Predicate = function(nodes) { 166 cvox.DomPredicates.heading1Predicate = function(nodes) {
167 return cvox.DomPredicates.containsTagName_(nodes, 'H1'); 167 return cvox.DomPredicates.containsTagName_(nodes, 'H1');
168 }; 168 };
169 169
170 170
171 /** 171 /**
172 * Heading level 2. 172 * Heading level 2.
173 * @param {Array.<Node>} nodes An array of nodes to check. 173 * @param {Array<Node>} nodes An array of nodes to check.
174 * @return {?Node} Node in the array that is a heading level 2. 174 * @return {?Node} Node in the array that is a heading level 2.
175 */ 175 */
176 cvox.DomPredicates.heading2Predicate = function(nodes) { 176 cvox.DomPredicates.heading2Predicate = function(nodes) {
177 return cvox.DomPredicates.containsTagName_(nodes, 'H2'); 177 return cvox.DomPredicates.containsTagName_(nodes, 'H2');
178 }; 178 };
179 179
180 180
181 /** 181 /**
182 * Heading level 3. 182 * Heading level 3.
183 * @param {Array.<Node>} nodes An array of nodes to check. 183 * @param {Array<Node>} nodes An array of nodes to check.
184 * @return {?Node} Node in the array that is a heading level 3. 184 * @return {?Node} Node in the array that is a heading level 3.
185 */ 185 */
186 cvox.DomPredicates.heading3Predicate = function(nodes) { 186 cvox.DomPredicates.heading3Predicate = function(nodes) {
187 return cvox.DomPredicates.containsTagName_(nodes, 'H3'); 187 return cvox.DomPredicates.containsTagName_(nodes, 'H3');
188 }; 188 };
189 189
190 190
191 /** 191 /**
192 * Heading level 4. 192 * Heading level 4.
193 * @param {Array.<Node>} nodes An array of nodes to check. 193 * @param {Array<Node>} nodes An array of nodes to check.
194 * @return {?Node} Node in the array that is a heading level 4. 194 * @return {?Node} Node in the array that is a heading level 4.
195 */ 195 */
196 cvox.DomPredicates.heading4Predicate = function(nodes) { 196 cvox.DomPredicates.heading4Predicate = function(nodes) {
197 return cvox.DomPredicates.containsTagName_(nodes, 'H4'); 197 return cvox.DomPredicates.containsTagName_(nodes, 'H4');
198 }; 198 };
199 199
200 200
201 /** 201 /**
202 * Heading level 5. 202 * Heading level 5.
203 * @param {Array.<Node>} nodes An array of nodes to check. 203 * @param {Array<Node>} nodes An array of nodes to check.
204 * @return {?Node} Node in the array that is a heading level 5. 204 * @return {?Node} Node in the array that is a heading level 5.
205 */ 205 */
206 cvox.DomPredicates.heading5Predicate = function(nodes) { 206 cvox.DomPredicates.heading5Predicate = function(nodes) {
207 return cvox.DomPredicates.containsTagName_(nodes, 'H5'); 207 return cvox.DomPredicates.containsTagName_(nodes, 'H5');
208 }; 208 };
209 209
210 210
211 /** 211 /**
212 * Heading level 6. 212 * Heading level 6.
213 * @param {Array.<Node>} nodes An array of nodes to check. 213 * @param {Array<Node>} nodes An array of nodes to check.
214 * @return {?Node} Node in the array that is a heading level 6. 214 * @return {?Node} Node in the array that is a heading level 6.
215 */ 215 */
216 cvox.DomPredicates.heading6Predicate = function(nodes) { 216 cvox.DomPredicates.heading6Predicate = function(nodes) {
217 return cvox.DomPredicates.containsTagName_(nodes, 'H6'); 217 return cvox.DomPredicates.containsTagName_(nodes, 'H6');
218 }; 218 };
219 219
220 220
221 /** 221 /**
222 * Link. 222 * Link.
223 * @param {Array.<Node>} nodes An array of nodes to check. 223 * @param {Array<Node>} nodes An array of nodes to check.
224 * @return {?Node} Node in the array that is a link. 224 * @return {?Node} Node in the array that is a link.
225 */ 225 */
226 cvox.DomPredicates.linkPredicate = function(nodes) { 226 cvox.DomPredicates.linkPredicate = function(nodes) {
227 for (var i = 0; i < nodes.length; i++) { 227 for (var i = 0; i < nodes.length; i++) {
228 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'link') || 228 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'link') ||
229 (nodes[i].tagName == 'A' && nodes[i].href)) { 229 (nodes[i].tagName == 'A' && nodes[i].href)) {
230 return nodes[i]; 230 return nodes[i];
231 } 231 }
232 } 232 }
233 return null; 233 return null;
234 }; 234 };
235 235
236 236
237 /** 237 /**
238 * Table. 238 * Table.
239 * @param {Array.<Node>} nodes An array of nodes to check. 239 * @param {Array<Node>} nodes An array of nodes to check.
240 * @return {?Node} Node in the array that is a data table. 240 * @return {?Node} Node in the array that is a data table.
241 */ 241 */
242 cvox.DomPredicates.tablePredicate = function(nodes) { 242 cvox.DomPredicates.tablePredicate = function(nodes) {
243 // TODO(stoarca): Captions should always be allowed!! 243 // TODO(stoarca): Captions should always be allowed!!
244 var node = cvox.DomUtil.findTableNodeInList(nodes, {allowCaptions: true}); 244 var node = cvox.DomUtil.findTableNodeInList(nodes, {allowCaptions: true});
245 if (node && !cvox.DomUtil.isLayoutTable(node)) { 245 if (node && !cvox.DomUtil.isLayoutTable(node)) {
246 return node; 246 return node;
247 } else { 247 } else {
248 return null; 248 return null;
249 } 249 }
250 }; 250 };
251 251
252 /** 252 /**
253 * Table Cell. 253 * Table Cell.
254 * @param {Array.<Node>} nodes An array of nodes to check. 254 * @param {Array<Node>} nodes An array of nodes to check.
255 * @return {?Node} Node in the array that is a table cell. 255 * @return {?Node} Node in the array that is a table cell.
256 */ 256 */
257 cvox.DomPredicates.cellPredicate = function(nodes) { 257 cvox.DomPredicates.cellPredicate = function(nodes) {
258 for (var i = nodes.length - 1; i >= 0; --i) { 258 for (var i = nodes.length - 1; i >= 0; --i) {
259 var node = nodes[i]; 259 var node = nodes[i];
260 if (node.tagName == 'TD' || 260 if (node.tagName == 'TD' ||
261 node.tagName == 'TH' || 261 node.tagName == 'TH' ||
262 (node.getAttribute && node.getAttribute('role') == 'gridcell')) { 262 (node.getAttribute && node.getAttribute('role') == 'gridcell')) {
263 return node; 263 return node;
264 } 264 }
265 } 265 }
266 return null; 266 return null;
267 }; 267 };
268 268
269 269
270 /** 270 /**
271 * Visited link. 271 * Visited link.
272 * @param {Array.<Node>} nodes An array of nodes to check. 272 * @param {Array<Node>} nodes An array of nodes to check.
273 * @return {?Node} Node in the array that is a visited link. 273 * @return {?Node} Node in the array that is a visited link.
274 */ 274 */
275 cvox.DomPredicates.visitedLinkPredicate = function(nodes) { 275 cvox.DomPredicates.visitedLinkPredicate = function(nodes) {
276 for (var i = nodes.length - 1; i >= 0; --i) { 276 for (var i = nodes.length - 1; i >= 0; --i) {
277 if (cvox.DomPredicates.linkPredicate([nodes[i]]) && 277 if (cvox.DomPredicates.linkPredicate([nodes[i]]) &&
278 cvox.ChromeVox.visitedUrls[nodes[i].href]) { 278 cvox.ChromeVox.visitedUrls[nodes[i].href]) {
279 return nodes[i]; 279 return nodes[i];
280 } 280 }
281 } 281 }
282 }; 282 };
283 283
284 284
285 /** 285 /**
286 * List. 286 * List.
287 * @param {Array.<Node>} nodes An array of nodes to check. 287 * @param {Array<Node>} nodes An array of nodes to check.
288 * @return {?Node} Node in the array that is a list. 288 * @return {?Node} Node in the array that is a list.
289 */ 289 */
290 cvox.DomPredicates.listPredicate = function(nodes) { 290 cvox.DomPredicates.listPredicate = function(nodes) {
291 for (var i = 0; i < nodes.length; i++) { 291 for (var i = 0; i < nodes.length; i++) {
292 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'list') || 292 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'list') ||
293 nodes[i].tagName == 'UL' || 293 nodes[i].tagName == 'UL' ||
294 nodes[i].tagName == 'OL') { 294 nodes[i].tagName == 'OL') {
295 return nodes[i]; 295 return nodes[i];
296 } 296 }
297 } 297 }
298 return null; 298 return null;
299 }; 299 };
300 300
301 301
302 /** 302 /**
303 * List item. 303 * List item.
304 * @param {Array.<Node>} nodes An array of nodes to check. 304 * @param {Array<Node>} nodes An array of nodes to check.
305 * @return {?Node} Node in the array that is a list item. 305 * @return {?Node} Node in the array that is a list item.
306 */ 306 */
307 cvox.DomPredicates.listItemPredicate = function(nodes) { 307 cvox.DomPredicates.listItemPredicate = function(nodes) {
308 for (var i = 0; i < nodes.length; i++) { 308 for (var i = 0; i < nodes.length; i++) {
309 if ((nodes[i].getAttribute && 309 if ((nodes[i].getAttribute &&
310 nodes[i].getAttribute('role') == 'listitem') || 310 nodes[i].getAttribute('role') == 'listitem') ||
311 nodes[i].tagName == 'LI') { 311 nodes[i].tagName == 'LI') {
312 return nodes[i]; 312 return nodes[i];
313 } 313 }
314 } 314 }
315 return null; 315 return null;
316 }; 316 };
317 317
318 318
319 /** 319 /**
320 * Blockquote. 320 * Blockquote.
321 * @param {Array.<Node>} nodes An array of nodes to check. 321 * @param {Array<Node>} nodes An array of nodes to check.
322 * @return {?Node} Node in the array that is a blockquote. 322 * @return {?Node} Node in the array that is a blockquote.
323 */ 323 */
324 cvox.DomPredicates.blockquotePredicate = function(nodes) { 324 cvox.DomPredicates.blockquotePredicate = function(nodes) {
325 return cvox.DomPredicates.containsTagName_(nodes, 'BLOCKQUOTE'); 325 return cvox.DomPredicates.containsTagName_(nodes, 'BLOCKQUOTE');
326 }; 326 };
327 327
328 328
329 /** 329 /**
330 * Form field. 330 * Form field.
331 * @param {Array.<Node>} nodes An array of nodes to check. 331 * @param {Array<Node>} nodes An array of nodes to check.
332 * @return {?Node} Node in the array that is any type of form field. 332 * @return {?Node} Node in the array that is any type of form field.
333 */ 333 */
334 cvox.DomPredicates.formFieldPredicate = function(nodes) { 334 cvox.DomPredicates.formFieldPredicate = function(nodes) {
335 for (var i = 0; i < nodes.length; i++) { 335 for (var i = 0; i < nodes.length; i++) {
336 if (cvox.DomUtil.isControl(nodes[i])) { 336 if (cvox.DomUtil.isControl(nodes[i])) {
337 return nodes[i]; 337 return nodes[i];
338 } 338 }
339 } 339 }
340 return null; 340 return null;
341 }; 341 };
342 342
343 343
344 /** 344 /**
345 * ARIA landmark. 345 * ARIA landmark.
346 * @param {Array.<Node>} nodes An array of nodes to check. 346 * @param {Array<Node>} nodes An array of nodes to check.
347 * @return {?Node} Node in the array that is an ARIA landmark. 347 * @return {?Node} Node in the array that is an ARIA landmark.
348 */ 348 */
349 cvox.DomPredicates.landmarkPredicate = function(nodes) { 349 cvox.DomPredicates.landmarkPredicate = function(nodes) {
350 for (var i = 0; i < nodes.length; i++) { 350 for (var i = 0; i < nodes.length; i++) {
351 if (cvox.AriaUtil.isLandmark(nodes[i])) { 351 if (cvox.AriaUtil.isLandmark(nodes[i])) {
352 return nodes[i]; 352 return nodes[i];
353 } 353 }
354 } 354 }
355 return null; 355 return null;
356 }; 356 };
(...skipping 11 matching lines...) Expand all
368 if (arr[i].tagName == tagName) { 368 if (arr[i].tagName == tagName) {
369 return arr[i]; 369 return arr[i];
370 } 370 }
371 } 371 }
372 return null; 372 return null;
373 }; 373 };
374 374
375 375
376 /** 376 /**
377 * MathML expression 377 * MathML expression
378 * @param {Array.<Node>} nodes An array of nodes to check. 378 * @param {Array<Node>} nodes An array of nodes to check.
379 * @return {?Node} Node in the array that is a math expression. 379 * @return {?Node} Node in the array that is a math expression.
380 */ 380 */
381 cvox.DomPredicates.mathPredicate = function(nodes) { 381 cvox.DomPredicates.mathPredicate = function(nodes) {
382 return cvox.DomUtil.findMathNodeInList(nodes); 382 return cvox.DomUtil.findMathNodeInList(nodes);
383 }; 383 };
384 384
385 /** 385 /**
386 * SECTION: A section is anything that indicates a new section. This includes 386 * SECTION: A section is anything that indicates a new section. This includes
387 * headings and landmarks. 387 * headings and landmarks.
388 * @param {Array.<Node>} nodes An array of nodes to check. 388 * @param {Array<Node>} nodes An array of nodes to check.
389 * @return {?Node} Node in the array that is considered a section marker. 389 * @return {?Node} Node in the array that is considered a section marker.
390 */ 390 */
391 cvox.DomPredicates.sectionPredicate = function(nodes) { 391 cvox.DomPredicates.sectionPredicate = function(nodes) {
392 for (var i = 0; i < nodes.length; i++) { 392 for (var i = 0; i < nodes.length; i++) {
393 if (cvox.DomUtil.isSemanticElt(nodes[i])) { 393 if (cvox.DomUtil.isSemanticElt(nodes[i])) {
394 return nodes[i]; 394 return nodes[i];
395 } 395 }
396 if (cvox.AriaUtil.isLandmark(nodes[i])) { 396 if (cvox.AriaUtil.isLandmark(nodes[i])) {
397 return nodes[i]; 397 return nodes[i];
398 } 398 }
(...skipping 10 matching lines...) Expand all
409 case 'H6': 409 case 'H6':
410 return nodes[i]; 410 return nodes[i];
411 } 411 }
412 } 412 }
413 return null; 413 return null;
414 }; 414 };
415 415
416 /** 416 /**
417 * CONTROL: A control is anything that the user can interact with. This includes 417 * CONTROL: A control is anything that the user can interact with. This includes
418 * form fields and links. 418 * form fields and links.
419 * @param {Array.<Node>} nodes An array of nodes to check. 419 * @param {Array<Node>} nodes An array of nodes to check.
420 * @return {?Node} Node in the array that is considered a control. 420 * @return {?Node} Node in the array that is considered a control.
421 */ 421 */
422 cvox.DomPredicates.controlPredicate = function(nodes) { 422 cvox.DomPredicates.controlPredicate = function(nodes) {
423 for (var i = 0; i < nodes.length; i++) { 423 for (var i = 0; i < nodes.length; i++) {
424 if (cvox.DomUtil.isControl(nodes[i])) { 424 if (cvox.DomUtil.isControl(nodes[i])) {
425 return nodes[i]; 425 return nodes[i];
426 } 426 }
427 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'link') || 427 if ((nodes[i].getAttribute && nodes[i].getAttribute('role') == 'link') ||
428 (nodes[i].tagName == 'A' && nodes[i].href)) { 428 (nodes[i].tagName == 'A' && nodes[i].href)) {
429 return nodes[i]; 429 return nodes[i];
430 } 430 }
431 } 431 }
432 return null; 432 return null;
433 }; 433 };
434 434
435 /** 435 /**
436 * Caption. 436 * Caption.
437 * @param {Array.<Node>} nodes An array of nodes to check. 437 * @param {Array<Node>} nodes An array of nodes to check.
438 * @return {?Node} Node in the array that is a caption. 438 * @return {?Node} Node in the array that is a caption.
439 */ 439 */
440 cvox.DomPredicates.captionPredicate = function(nodes) { 440 cvox.DomPredicates.captionPredicate = function(nodes) {
441 for (var i = 0; i < nodes.length; i++) { 441 for (var i = 0; i < nodes.length; i++) {
442 if (nodes[i].tagName == 'CAPTION') { 442 if (nodes[i].tagName == 'CAPTION') {
443 return nodes[i]; 443 return nodes[i];
444 } 444 }
445 } 445 }
446 return null; 446 return null;
447 }; 447 };
448 448
449 /** 449 /**
450 * Article. 450 * Article.
451 * @param {Array.<Node>} nodes An array of nodes to check. 451 * @param {Array<Node>} nodes An array of nodes to check.
452 * @return {?Node} Node in the array that is a article. 452 * @return {?Node} Node in the array that is a article.
453 */ 453 */
454 cvox.DomPredicates.articlePredicate = function(nodes) { 454 cvox.DomPredicates.articlePredicate = function(nodes) {
455 for (var i = 0; i < nodes.length; i++) { 455 for (var i = 0; i < nodes.length; i++) {
456 if ((nodes[i].getAttribute && 456 if ((nodes[i].getAttribute &&
457 nodes[i].getAttribute('role') == 'article') || 457 nodes[i].getAttribute('role') == 'article') ||
458 nodes[i].tagName == 'ARTICLE') { 458 nodes[i].tagName == 'ARTICLE') {
459 return nodes[i]; 459 return nodes[i];
460 } 460 }
461 } 461 }
462 return null; 462 return null;
463 }; 463 };
464 464
465 /** 465 /**
466 * Media. 466 * Media.
467 * @param {Array.<Node>} nodes An array of nodes to check. 467 * @param {Array<Node>} nodes An array of nodes to check.
468 * @return {?Node} Node in the array that is a media widget (video or audio). 468 * @return {?Node} Node in the array that is a media widget (video or audio).
469 */ 469 */
470 cvox.DomPredicates.mediaPredicate = function(nodes) { 470 cvox.DomPredicates.mediaPredicate = function(nodes) {
471 for (var i = 0; i < nodes.length; i++) { 471 for (var i = 0; i < nodes.length; i++) {
472 if (nodes[i].tagName == 'AUDIO' || 472 if (nodes[i].tagName == 'AUDIO' ||
473 nodes[i].tagName == 'VIDEO') { 473 nodes[i].tagName == 'VIDEO') {
474 return nodes[i]; 474 return nodes[i];
475 } 475 }
476 } 476 }
477 return null; 477 return null;
478 }; 478 };
479 479
480 480
481 /** 481 /**
482 * Ordered List. 482 * Ordered List.
483 * @param {Array.<Node>} nodes An array of nodes to check. 483 * @param {Array<Node>} nodes An array of nodes to check.
484 * @return {?Node} Node in the array that is a ordered list. 484 * @return {?Node} Node in the array that is a ordered list.
485 */ 485 */
486 cvox.DomPredicates.orderedListPredicate = function(nodes) { 486 cvox.DomPredicates.orderedListPredicate = function(nodes) {
487 for (var i = 0; i < nodes.length; i++) { 487 for (var i = 0; i < nodes.length; i++) {
488 if (nodes[i].tagName == 'OL') { 488 if (nodes[i].tagName == 'OL') {
489 return nodes[i]; 489 return nodes[i];
490 } 490 }
491 } 491 }
492 return null; 492 return null;
493 }; 493 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698