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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js

Issue 1371483003: cvox2: Avoid uncaught exception on invalid input type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 2 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 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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 } 350 }
351 }, 351 },
352 visited: { 352 visited: {
353 on: { 353 on: {
354 msgId: 'visited_state' 354 msgId: 'visited_state'
355 } 355 }
356 } 356 }
357 }; 357 };
358 358
359 /** 359 /**
360 * Maps input types to message IDs.
361 * @const {Object<string>}
362 * @private
363 */
364 Output.INPUT_TYPE_MESSAGE_IDS_ = {
365 'email': 'input_type_email',
366 'file': 'input_type_file',
367 'number': 'input_type_number',
368 'password': 'input_type_password',
369 'search': 'input_type_search',
370 'tel': 'input_type_tel',
371 'text': 'input_type_text',
372 'url': 'input_type_url',
373 };
374
375 /**
360 * Rules specifying format of AutomationNodes for output. 376 * Rules specifying format of AutomationNodes for output.
361 * @type {!Object<Object<Object<string>>>} 377 * @type {!Object<Object<Object<string>>>}
362 */ 378 */
363 Output.RULES = { 379 Output.RULES = {
364 navigate: { 380 navigate: {
365 'default': { 381 'default': {
366 speak: '$name $value $help $role', 382 speak: '$name $value $help $role',
367 braille: '' 383 braille: ''
368 }, 384 },
369 abstractContainer: { 385 abstractContainer: {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 speak: '@describe_slider($value, $name) $help' 467 speak: '@describe_slider($value, $name) $help'
452 }, 468 },
453 staticText: { 469 staticText: {
454 speak: '$value=' 470 speak: '$value='
455 }, 471 },
456 tab: { 472 tab: {
457 speak: '@describe_tab($name)' 473 speak: '@describe_tab($name)'
458 }, 474 },
459 textField: { 475 textField: {
460 speak: '$name $value $if(' + 476 speak: '$name $value $if(' +
461 '$inputType, @input_type_+$inputType, @input_type_text)', 477 '$inputType, $inputType, $role)',
462 braille: '' 478 braille: ''
463 }, 479 },
464 toolbar: { 480 toolbar: {
465 enter: '$name $role' 481 enter: '$name $role'
466 }, 482 },
467 tree: { 483 tree: {
468 enter: '$name $role @@list_with_items($countChildren(treeItem))' 484 enter: '$name $role @@list_with_items($countChildren(treeItem))'
469 }, 485 },
470 treeItem: { 486 treeItem: {
471 enter: '$role $expanded $collapsed ' + 487 enter: '$role $expanded $collapsed ' +
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 var info = Output.ROLE_INFO_[node.role]; 895 var info = Output.ROLE_INFO_[node.role];
880 if (info) { 896 if (info) {
881 if (this.formatOptions_.braille) 897 if (this.formatOptions_.braille)
882 msg = cvox.ChromeVox.msgs.getMsg(info.msgId + '_brl'); 898 msg = cvox.ChromeVox.msgs.getMsg(info.msgId + '_brl');
883 else 899 else
884 msg = cvox.ChromeVox.msgs.getMsg(info.msgId); 900 msg = cvox.ChromeVox.msgs.getMsg(info.msgId);
885 } else { 901 } else {
886 console.error('Missing role info for ' + node.role); 902 console.error('Missing role info for ' + node.role);
887 } 903 }
888 this.append_(buff, msg, options); 904 this.append_(buff, msg, options);
905 } else if (token == 'inputType') {
906 if (!node.inputType)
907 return;
908 options.annotation.push(token);
909 var msgId = Output.INPUT_TYPE_MESSAGE_IDS_[node.inputType] ||
910 'input_type_text';
911 if (this.formatOptions_.braille)
912 msgId = msgId + '_brl';
913 this.append_(buff, cvox.ChromeVox.msgs.getMsg(msgId), options);
889 } else if (token == 'tableRowIndex' || 914 } else if (token == 'tableRowIndex' ||
890 token == 'tableCellColumnIndex') { 915 token == 'tableCellColumnIndex') {
891 var value = node[token]; 916 var value = node[token];
892 if (!value) 917 if (!value)
893 return; 918 return;
894 value = String(value + 1); 919 value = String(value + 1);
895 options.annotation.push(token); 920 options.annotation.push(token);
896 this.append_(buff, value, options); 921 this.append_(buff, value, options);
897 } else if (node[token] !== undefined) { 922 } else if (node[token] !== undefined) {
898 options.annotation.push(token); 923 options.annotation.push(token);
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 elem.end); 1321 elem.end);
1297 }); 1322 });
1298 spansToRemove.forEach(result.removeSpan.bind(result)); 1323 spansToRemove.forEach(result.removeSpan.bind(result));
1299 separator = Output.SPACE; 1324 separator = Output.SPACE;
1300 }); 1325 });
1301 return result; 1326 return result;
1302 } 1327 }
1303 }; 1328 };
1304 1329
1305 }); // goog.scope 1330 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698