OLD | NEW |
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 Provides output services for ChromeVox. | 6 * @fileoverview Provides output services for ChromeVox. |
7 */ | 7 */ |
8 | 8 |
9 goog.provide('Output'); | 9 goog.provide('Output'); |
10 goog.provide('Output.EventType'); | 10 goog.provide('Output.EventType'); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 * @const {Object<{msgId: string, | 85 * @const {Object<{msgId: string, |
86 * earconId: (string|undefined), | 86 * earconId: (string|undefined), |
87 * inherits: (string|undefined)}>} | 87 * inherits: (string|undefined)}>} |
88 * msgId: the message id of the role. | 88 * msgId: the message id of the role. |
89 * earconId: an optional earcon to play when encountering the role. | 89 * earconId: an optional earcon to play when encountering the role. |
90 * inherits: inherits rules from this role. | 90 * inherits: inherits rules from this role. |
91 * @private | 91 * @private |
92 */ | 92 */ |
93 Output.ROLE_INFO_ = { | 93 Output.ROLE_INFO_ = { |
94 alert: { | 94 alert: { |
95 msgId: 'aria_role_alert', | 95 msgId: 'role_alert', |
96 earconId: 'ALERT_NONMODAL', | 96 earconId: 'ALERT_NONMODAL', |
97 }, | 97 }, |
98 alertDialog: { | 98 alertDialog: { |
99 msgId: 'aria_role_alertdialog' | 99 msgId: 'role_alertdialog' |
100 }, | 100 }, |
101 article: { | 101 article: { |
102 msgId: 'aria_role_article', | 102 msgId: 'role_article', |
103 inherits: 'abstractContainer' | 103 inherits: 'abstractContainer' |
104 }, | 104 }, |
105 application: { | 105 application: { |
106 msgId: 'aria_role_application', | 106 msgId: 'role_application', |
107 inherits: 'abstractContainer' | 107 inherits: 'abstractContainer' |
108 }, | 108 }, |
109 banner: { | 109 banner: { |
110 msgId: 'aria_role_banner', | 110 msgId: 'role_banner', |
111 inherits: 'abstractContainer' | 111 inherits: 'abstractContainer' |
112 }, | 112 }, |
113 button: { | 113 button: { |
114 msgId: 'tag_button', | 114 msgId: 'role_button', |
115 earconId: 'BUTTON' | 115 earconId: 'BUTTON' |
116 }, | 116 }, |
117 buttonDropDown: { | 117 buttonDropDown: { |
118 msgId: 'tag_button', | 118 msgId: 'role_button', |
119 earconId: 'BUTTON' | 119 earconId: 'BUTTON' |
120 }, | 120 }, |
121 cell: { | 121 cell: { |
122 msgId: 'aria_role_gridcell' | 122 msgId: 'role_gridcell' |
123 }, | 123 }, |
124 checkBox: { | 124 checkBox: { |
125 msgId: 'input_type_checkbox' | 125 msgId: 'role_checkbox' |
126 }, | 126 }, |
127 columnHeader: { | 127 columnHeader: { |
128 msgId: 'aria_role_columnheader', | 128 msgId: 'role_columnheader', |
129 inherits: 'abstractContainer' | 129 inherits: 'abstractContainer' |
130 }, | 130 }, |
131 comboBox: { | 131 comboBox: { |
132 msgId: 'aria_role_combobox' | 132 msgId: 'role_combobox' |
133 }, | 133 }, |
134 complementary: { | 134 complementary: { |
135 msgId: 'aria_role_complementary', | 135 msgId: 'role_complementary', |
136 inherits: 'abstractContainer' | 136 inherits: 'abstractContainer' |
137 }, | 137 }, |
138 contentInfo: { | 138 contentInfo: { |
139 msgId: 'aria_role_contentinfo', | 139 msgId: 'role_contentinfo', |
140 inherits: 'abstractContainer' | 140 inherits: 'abstractContainer' |
141 }, | 141 }, |
142 date: { | 142 date: { |
143 msgId: 'input_type_date', | 143 msgId: 'input_type_date', |
144 inherits: 'abstractContainer' | 144 inherits: 'abstractContainer' |
145 }, | 145 }, |
146 definition: { | 146 definition: { |
147 msgId: 'aria_role_definition', | 147 msgId: 'role_definition', |
148 inherits: 'abstractContainer' | 148 inherits: 'abstractContainer' |
149 }, | 149 }, |
150 dialog: { | 150 dialog: { |
151 msgId: 'dialog' | 151 msgId: 'role_dialog' |
152 }, | 152 }, |
153 directory: { | 153 directory: { |
154 msgId: 'aria_role_directory', | 154 msgId: 'role_directory', |
155 inherits: 'abstractContainer' | 155 inherits: 'abstractContainer' |
156 }, | 156 }, |
157 document: { | 157 document: { |
158 msgId: 'aria_role_document', | 158 msgId: 'role_document', |
159 inherits: 'abstractContainer' | 159 inherits: 'abstractContainer' |
160 }, | 160 }, |
161 form: { | 161 form: { |
162 msgId: 'aria_role_form', | 162 msgId: 'role_form', |
163 inherits: 'abstractContainer' | 163 inherits: 'abstractContainer' |
164 }, | 164 }, |
165 grid: { | 165 grid: { |
166 msgId: 'aria_role_grid' | 166 msgId: 'role_grid' |
167 }, | 167 }, |
168 group: { | 168 group: { |
169 msgId: 'aria_role_group' | 169 msgId: 'role_group' |
170 }, | 170 }, |
171 heading: { | 171 heading: { |
172 msgId: 'aria_role_heading', | 172 msgId: 'role_heading', |
173 }, | 173 }, |
174 image: { | 174 image: { |
175 msgId: 'aria_role_img', | 175 msgId: 'role_img', |
176 }, | 176 }, |
177 inputTime: { | 177 inputTime: { |
178 msgId: 'input_type_time', | 178 msgId: 'input_type_time', |
179 inherits: 'abstractContainer' | 179 inherits: 'abstractContainer' |
180 }, | 180 }, |
181 link: { | 181 link: { |
182 msgId: 'tag_link', | 182 msgId: 'role_link', |
183 earconId: 'LINK' | 183 earconId: 'LINK' |
184 }, | 184 }, |
185 listBox: { | 185 listBox: { |
186 msgId: 'aria_role_listbox', | 186 msgId: 'role_listbox', |
187 earconId: 'LISTBOX' | 187 earconId: 'LISTBOX' |
188 }, | 188 }, |
189 listBoxOption: { | 189 listBoxOption: { |
190 msgId: 'aria_role_listitem', | 190 msgId: 'role_listitem', |
191 earconId: 'LIST_ITEM' | 191 earconId: 'LIST_ITEM' |
192 }, | 192 }, |
193 listItem: { | 193 listItem: { |
194 msgId: 'aria_role_listitem', | 194 msgId: 'role_listitem', |
195 earconId: 'LIST_ITEM' | 195 earconId: 'LIST_ITEM' |
196 }, | 196 }, |
197 log: { | 197 log: { |
198 msgId: 'aria_role_log', | 198 msgId: 'role_log', |
199 }, | 199 }, |
200 main: { | 200 main: { |
201 msgId: 'aria_role_main', | 201 msgId: 'role_main', |
202 inherits: 'abstractContainer' | 202 inherits: 'abstractContainer' |
203 }, | 203 }, |
204 marquee: { | 204 marquee: { |
205 msgId: 'aria_role_marquee', | 205 msgId: 'role_marquee', |
206 }, | 206 }, |
207 math: { | 207 math: { |
208 msgId: 'aria_role_math', | 208 msgId: 'role_math', |
209 inherits: 'abstractContainer' | 209 inherits: 'abstractContainer' |
210 }, | 210 }, |
211 menu: { | 211 menu: { |
212 msgId: 'aria_role_menu' | 212 msgId: 'role_menu' |
213 }, | 213 }, |
214 menuBar: { | 214 menuBar: { |
215 msgId: 'aria_role_menubar', | 215 msgId: 'role_menubar', |
216 }, | 216 }, |
217 menuItem: { | 217 menuItem: { |
218 msgId: 'aria_role_menuitem' | 218 msgId: 'role_menuitem' |
219 }, | 219 }, |
220 menuItemCheckBox: { | 220 menuItemCheckBox: { |
221 msgId: 'aria_role_menuitemcheckbox' | 221 msgId: 'role_menuitemcheckbox' |
222 }, | 222 }, |
223 menuItemRadio: { | 223 menuItemRadio: { |
224 msgId: 'aria_role_menuitemradio' | 224 msgId: 'role_menuitemradio' |
225 }, | 225 }, |
226 menuListOption: { | 226 menuListOption: { |
227 msgId: 'aria_role_menuitem' | 227 msgId: 'role_menuitem' |
228 }, | 228 }, |
229 menuListPopup: { | 229 menuListPopup: { |
230 msgId: 'aria_role_menu' | 230 msgId: 'role_menu' |
231 }, | 231 }, |
232 navigation: { | 232 navigation: { |
233 msgId: 'aria_role_navigation', | 233 msgId: 'role_navigation', |
234 inherits: 'abstractContainer' | 234 inherits: 'abstractContainer' |
235 }, | 235 }, |
236 note: { | 236 note: { |
237 msgId: 'aria_role_note', | 237 msgId: 'role_note', |
238 inherits: 'abstractContainer' | 238 inherits: 'abstractContainer' |
239 }, | 239 }, |
240 popUpButton: { | 240 popUpButton: { |
241 msgId: 'tag_button', | 241 msgId: 'role_button', |
242 earcon: 'LISTBOX' | 242 earcon: 'LISTBOX' |
243 }, | 243 }, |
244 radioButton: { | 244 radioButton: { |
245 msgId: 'input_type_radio' | 245 msgId: 'role_radio' |
246 }, | 246 }, |
247 radioGroup: { | 247 radioGroup: { |
248 msgId: 'aria_role_radiogroup', | 248 msgId: 'role_radiogroup', |
249 }, | 249 }, |
250 region: { | 250 region: { |
251 msgId: 'aria_role_region', | 251 msgId: 'role_region', |
252 inherits: 'abstractContainer' | 252 inherits: 'abstractContainer' |
253 }, | 253 }, |
254 rowHeader: { | 254 rowHeader: { |
255 msgId: 'aria_role_rowheader', | 255 msgId: 'role_rowheader', |
256 inherits: 'abstractContainer' | 256 inherits: 'abstractContainer' |
257 }, | 257 }, |
258 scrollBar: { | 258 scrollBar: { |
259 msgId: 'aria_role_scrollbar', | 259 msgId: 'role_scrollbar', |
260 }, | 260 }, |
261 search: { | 261 search: { |
262 msgId: 'aria_role_search', | 262 msgId: 'role_search', |
263 inherits: 'abstractContainer' | 263 inherits: 'abstractContainer' |
264 }, | 264 }, |
265 separator: { | 265 separator: { |
266 msgId: 'aria_role_separator', | 266 msgId: 'role_separator', |
267 inherits: 'abstractContainer' | 267 inherits: 'abstractContainer' |
268 }, | 268 }, |
269 spinButton: { | 269 spinButton: { |
270 msgId: 'aria_role_spinbutton', | 270 msgId: 'role_spinbutton', |
271 earconId: 'LISTBOX' | 271 earconId: 'LISTBOX' |
272 }, | 272 }, |
273 status: { | 273 status: { |
274 msgId: 'aria_role_status' | 274 msgId: 'role_status' |
275 }, | 275 }, |
276 tab: { | 276 tab: { |
277 msgId: 'aria_role_tab' | 277 msgId: 'role_tab' |
278 }, | 278 }, |
279 tabList: { | 279 tabList: { |
280 msgId: 'aria_role_tablist' | 280 msgId: 'role_tablist' |
281 }, | 281 }, |
282 tabPanel: { | 282 tabPanel: { |
283 msgId: 'aria_role_tabpanel' | 283 msgId: 'role_tabpanel' |
284 }, | 284 }, |
285 textBox: { | 285 textBox: { |
286 msgId: 'input_type_text', | 286 msgId: 'input_type_text', |
287 earconId: 'EDITABLE_TEXT' | 287 earconId: 'EDITABLE_TEXT' |
288 }, | 288 }, |
289 textField: { | 289 textField: { |
290 msgId: 'input_type_text', | 290 msgId: 'input_type_text', |
291 earconId: 'EDITABLE_TEXT' | 291 earconId: 'EDITABLE_TEXT' |
292 }, | 292 }, |
293 time: { | 293 time: { |
294 msgId: 'tag_time', | 294 msgId: 'tag_time', |
295 inherits: 'abstractContainer' | 295 inherits: 'abstractContainer' |
296 }, | 296 }, |
297 timer: { | 297 timer: { |
298 msgId: 'aria_role_timer' | 298 msgId: 'role_timer' |
299 }, | 299 }, |
300 toolbar: { | 300 toolbar: { |
301 msgId: 'aria_role_toolbar' | 301 msgId: 'role_toolbar' |
302 }, | 302 }, |
303 tree: { | 303 tree: { |
304 msgId: 'aria_role_tree' | 304 msgId: 'role_tree' |
305 }, | 305 }, |
306 treeItem: { | 306 treeItem: { |
307 msgId: 'aria_role_treeitem' | 307 msgId: 'role_treeitem' |
308 } | 308 } |
309 }; | 309 }; |
310 | 310 |
311 /** | 311 /** |
312 * Metadata about supported automation states. | 312 * Metadata about supported automation states. |
313 * @const {!Object<{on: {msgId: string, earconId: string}, | 313 * @const {!Object<{on: {msgId: string, earconId: string}, |
314 * off: {msgId: string, earconId: string}, | 314 * off: {msgId: string, earconId: string}, |
315 * omitted: {msgId: string, earconId: string}}>} | 315 * omitted: {msgId: string, earconId: string}}>} |
316 * on: info used to describe a state that is set to true. | 316 * on: info used to describe a state that is set to true. |
317 * off: info used to describe a state that is set to false. | 317 * off: info used to describe a state that is set to false. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 } | 356 } |
357 }; | 357 }; |
358 | 358 |
359 /** | 359 /** |
360 * Maps input types to message IDs. | 360 * Maps input types to message IDs. |
361 * @const {Object<string>} | 361 * @const {Object<string>} |
362 * @private | 362 * @private |
363 */ | 363 */ |
364 Output.INPUT_TYPE_MESSAGE_IDS_ = { | 364 Output.INPUT_TYPE_MESSAGE_IDS_ = { |
365 'email': 'input_type_email', | 365 'email': 'input_type_email', |
366 'file': 'input_type_file', | |
367 'number': 'input_type_number', | 366 'number': 'input_type_number', |
368 'password': 'input_type_password', | 367 'password': 'input_type_password', |
369 'search': 'input_type_search', | 368 'search': 'input_type_search', |
370 'tel': 'input_type_tel', | 369 'tel': 'input_type_number', |
371 'text': 'input_type_text', | 370 'text': 'input_type_text', |
372 'url': 'input_type_url', | 371 'url': 'input_type_url', |
373 }; | 372 }; |
374 | 373 |
375 /** | 374 /** |
376 * Rules specifying format of AutomationNodes for output. | 375 * Rules specifying format of AutomationNodes for output. |
377 * @type {!Object<Object<Object<string>>>} | 376 * @type {!Object<Object<Object<string>>>} |
378 */ | 377 */ |
379 Output.RULES = { | 378 Output.RULES = { |
380 navigate: { | 379 navigate: { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 enter: '$role' | 432 enter: '$role' |
434 }, | 433 }, |
435 menu: { | 434 menu: { |
436 enter: '$name $role @@list_with_items($countChildren(menuItem))' | 435 enter: '$name $role @@list_with_items($countChildren(menuItem))' |
437 }, | 436 }, |
438 menuItem: { | 437 menuItem: { |
439 speak: '$name $role $if($haspopup, @has_submenu) ' + | 438 speak: '$name $role $if($haspopup, @has_submenu) ' + |
440 '@describe_index($indexInParent, $parentChildCount)' | 439 '@describe_index($indexInParent, $parentChildCount)' |
441 }, | 440 }, |
442 menuListOption: { | 441 menuListOption: { |
443 speak: '$name $value @aria_role_menuitem ' + | 442 speak: '$name $value @role_menuitem ' + |
444 '@describe_index($indexInParent, $parentChildCount)' | 443 '@describe_index($indexInParent, $parentChildCount)' |
445 }, | 444 }, |
446 paragraph: { | 445 paragraph: { |
447 speak: '$descendants' | 446 speak: '$descendants' |
448 }, | 447 }, |
449 popUpButton: { | 448 popUpButton: { |
450 speak: '$value $name $role @aria_has_popup ' + | 449 speak: '$value $name $role @aria_has_popup ' + |
451 '$if($collapsed, @aria_expanded_false, @aria_expanded_true)' | 450 '$if($collapsed, @aria_expanded_false, @aria_expanded_true)' |
452 }, | 451 }, |
453 radioButton: { | 452 radioButton: { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 menuListValueChanged: { | 505 menuListValueChanged: { |
507 'default': { | 506 'default': { |
508 speak: '$value $name ' + | 507 speak: '$value $name ' + |
509 '$find({"state": {"selected": true, "invisible": false}}, ' + | 508 '$find({"state": {"selected": true, "invisible": false}}, ' + |
510 '@describe_index($indexInParent, $parentChildCount)) ' | 509 '@describe_index($indexInParent, $parentChildCount)) ' |
511 } | 510 } |
512 }, | 511 }, |
513 alert: { | 512 alert: { |
514 default: { | 513 default: { |
515 speak: '!doNotInterrupt ' + | 514 speak: '!doNotInterrupt ' + |
516 '@aria_role_alert $name $earcon(ALERT_NONMODAL) $descendants' | 515 '@role_alert $name $earcon(ALERT_NONMODAL) $descendants' |
517 } | 516 } |
518 } | 517 } |
519 }; | 518 }; |
520 | 519 |
521 /** | 520 /** |
522 * Custom actions performed while rendering an output string. | 521 * Custom actions performed while rendering an output string. |
523 * @constructor | 522 * @constructor |
524 */ | 523 */ |
525 Output.Action = function() { | 524 Output.Action = function() { |
526 }; | 525 }; |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 var prev = null; | 887 var prev = null; |
889 if (node) | 888 if (node) |
890 prev = cursors.Range.fromNode(node); | 889 prev = cursors.Range.fromNode(node); |
891 this.range_(subrange, prev, 'navigate', buff); | 890 this.range_(subrange, prev, 'navigate', buff); |
892 } else if (token == 'role') { | 891 } else if (token == 'role') { |
893 options.annotation.push(token); | 892 options.annotation.push(token); |
894 var msg = node.role; | 893 var msg = node.role; |
895 var info = Output.ROLE_INFO_[node.role]; | 894 var info = Output.ROLE_INFO_[node.role]; |
896 if (info) { | 895 if (info) { |
897 if (this.formatOptions_.braille) | 896 if (this.formatOptions_.braille) |
898 msg = cvox.ChromeVox.msgs.getMsg(info.msgId + '_brl'); | 897 msg = Msgs.getMsg(info.msgId + '_brl'); |
899 else | 898 else |
900 msg = cvox.ChromeVox.msgs.getMsg(info.msgId); | 899 msg = Msgs.getMsg(info.msgId); |
901 } else { | 900 } else { |
902 console.error('Missing role info for ' + node.role); | 901 console.error('Missing role info for ' + node.role); |
903 } | 902 } |
904 this.append_(buff, msg, options); | 903 this.append_(buff, msg, options); |
905 } else if (token == 'inputType') { | 904 } else if (token == 'inputType') { |
906 if (!node.inputType) | 905 if (!node.inputType) |
907 return; | 906 return; |
908 options.annotation.push(token); | 907 options.annotation.push(token); |
909 var msgId = Output.INPUT_TYPE_MESSAGE_IDS_[node.inputType] || | 908 var msgId = Output.INPUT_TYPE_MESSAGE_IDS_[node.inputType] || |
910 'input_type_text'; | 909 'input_type_text'; |
911 if (this.formatOptions_.braille) | 910 if (this.formatOptions_.braille) |
912 msgId = msgId + '_brl'; | 911 msgId = msgId + '_brl'; |
913 this.append_(buff, cvox.ChromeVox.msgs.getMsg(msgId), options); | 912 this.append_(buff, Msgs.getMsg(msgId), options); |
914 } else if (token == 'tableRowIndex' || | 913 } else if (token == 'tableRowIndex' || |
915 token == 'tableCellColumnIndex') { | 914 token == 'tableCellColumnIndex') { |
916 var value = node[token]; | 915 var value = node[token]; |
917 if (!value) | 916 if (!value) |
918 return; | 917 return; |
919 value = String(value + 1); | 918 value = String(value + 1); |
920 options.annotation.push(token); | 919 options.annotation.push(token); |
921 this.append_(buff, value, options); | 920 this.append_(buff, value, options); |
922 } else if (node[token] !== undefined) { | 921 } else if (node[token] !== undefined) { |
923 options.annotation.push(token); | 922 options.annotation.push(token); |
(...skipping 11 matching lines...) Expand all Loading... |
935 resolvedInfo = node.state[token] ? stateInfo.on : stateInfo.off; | 934 resolvedInfo = node.state[token] ? stateInfo.on : stateInfo.off; |
936 if (!resolvedInfo) | 935 if (!resolvedInfo) |
937 return; | 936 return; |
938 if (this.formatOptions_.speech && resolvedInfo.earconId) { | 937 if (this.formatOptions_.speech && resolvedInfo.earconId) { |
939 options.annotation.push( | 938 options.annotation.push( |
940 new Output.EarconAction(resolvedInfo.earconId)); | 939 new Output.EarconAction(resolvedInfo.earconId)); |
941 } | 940 } |
942 var msgId = | 941 var msgId = |
943 this.formatOptions_.braille ? resolvedInfo.msgId + '_brl' : | 942 this.formatOptions_.braille ? resolvedInfo.msgId + '_brl' : |
944 resolvedInfo.msgId; | 943 resolvedInfo.msgId; |
945 var msg = cvox.ChromeVox.msgs.getMsg(msgId); | 944 var msg = Msgs.getMsg(msgId); |
946 this.append_(buff, msg, options); | 945 this.append_(buff, msg, options); |
947 } else if (tree.firstChild) { | 946 } else if (tree.firstChild) { |
948 // Custom functions. | 947 // Custom functions. |
949 if (token == 'if') { | 948 if (token == 'if') { |
950 var cond = tree.firstChild; | 949 var cond = tree.firstChild; |
951 var attrib = cond.value.slice(1); | 950 var attrib = cond.value.slice(1); |
952 if (node[attrib] || node.state[attrib]) | 951 if (node[attrib] || node.state[attrib]) |
953 this.format_(node, cond.nextSibling, buff); | 952 this.format_(node, cond.nextSibling, buff); |
954 else | 953 else |
955 this.format_(node, cond.nextSibling.nextSibling, buff); | 954 this.format_(node, cond.nextSibling.nextSibling, buff); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 if (curArg.value[0] != '$') { | 991 if (curArg.value[0] != '$') { |
993 console.error('Unexpected value: ' + curArg.value); | 992 console.error('Unexpected value: ' + curArg.value); |
994 return; | 993 return; |
995 } | 994 } |
996 var msgBuff = []; | 995 var msgBuff = []; |
997 this.format_(node, curArg, msgBuff); | 996 this.format_(node, curArg, msgBuff); |
998 msgArgs = msgArgs.concat(msgBuff); | 997 msgArgs = msgArgs.concat(msgBuff); |
999 curArg = curArg.nextSibling; | 998 curArg = curArg.nextSibling; |
1000 } | 999 } |
1001 } | 1000 } |
1002 var msg = cvox.ChromeVox.msgs.getMsg(msgId, msgArgs); | 1001 var msg = Msgs.getMsg(msgId, msgArgs); |
1003 try { | 1002 try { |
1004 if (this.formatOptions_.braille) | 1003 if (this.formatOptions_.braille) |
1005 msg = cvox.ChromeVox.msgs.getMsg(msgId + '_brl', msgArgs) || msg; | 1004 msg = Msgs.getMsg(msgId + '_brl', msgArgs) || msg; |
1006 } catch(e) {} | 1005 } catch(e) {} |
1007 | 1006 |
1008 if (!msg) { | 1007 if (!msg) { |
1009 console.error('Could not get message ' + msgId); | 1008 console.error('Could not get message ' + msgId); |
1010 return; | 1009 return; |
1011 } | 1010 } |
1012 | 1011 |
1013 if (isPluralized) { | 1012 if (isPluralized) { |
1014 var arg = tree.firstChild; | 1013 var arg = tree.firstChild; |
1015 if (!arg || arg.nextSibling) { | 1014 if (!arg || arg.nextSibling) { |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 elem.end); | 1320 elem.end); |
1322 }); | 1321 }); |
1323 spansToRemove.forEach(result.removeSpan.bind(result)); | 1322 spansToRemove.forEach(result.removeSpan.bind(result)); |
1324 separator = Output.SPACE; | 1323 separator = Output.SPACE; |
1325 }); | 1324 }); |
1326 return result; | 1325 return result; |
1327 } | 1326 } |
1328 }; | 1327 }; |
1329 | 1328 |
1330 }); // goog.scope | 1329 }); // goog.scope |
OLD | NEW |