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 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 * @type {!Object<Object<Object<string>>>} | 414 * @type {!Object<Object<Object<string>>>} |
415 */ | 415 */ |
416 Output.RULES = { | 416 Output.RULES = { |
417 navigate: { | 417 navigate: { |
418 'default': { | 418 'default': { |
419 speak: '$name $value $state $role $description', | 419 speak: '$name $value $state $role $description', |
420 braille: '' | 420 braille: '' |
421 }, | 421 }, |
422 abstractContainer: { | 422 abstractContainer: { |
423 enter: '$nameFromNode $role $state $description', | 423 enter: '$nameFromNode $role $state $description', |
424 speak: '$descendants $name $value $state $role $description', | 424 speak: '$name $value $state $role $description', |
425 leave: '@exited_container($role)' | 425 leave: '@exited_container($role)' |
426 }, | 426 }, |
427 alert: { | 427 alert: { |
428 speak: '!doNotInterrupt $role $descendants' | 428 speak: '!doNotInterrupt $role $descendants' |
429 }, | 429 }, |
430 alertDialog: { | 430 alertDialog: { |
431 enter: '$nameFromNode $role $description', | 431 enter: '$nameFromNode $role $description', |
432 speak: '$name $role $descendants' | 432 speak: '$name $role $descendants' |
433 }, | 433 }, |
434 cell: { | 434 cell: { |
(...skipping 15 matching lines...) Expand all Loading... |
450 }, | 450 }, |
451 div: { | 451 div: { |
452 enter: '$nameFromNode', | 452 enter: '$nameFromNode', |
453 speak: '$name $description $descendants' | 453 speak: '$name $description $descendants' |
454 }, | 454 }, |
455 grid: { | 455 grid: { |
456 enter: '$nameFromNode $role $description' | 456 enter: '$nameFromNode $role $description' |
457 }, | 457 }, |
458 group: { | 458 group: { |
459 enter: '$nameFromNode $state $description', | 459 enter: '$nameFromNode $state $description', |
460 speak: '$descendants $name $value $state $description', | 460 speak: '$nameOrDescendants $value $state $description', |
461 leave: '' | 461 leave: '' |
462 }, | 462 }, |
463 heading: { | 463 heading: { |
464 enter: '!relativePitch(hierarchicalLevel) ' + | 464 enter: '!relativePitch(hierarchicalLevel) ' + |
465 '$nameFromNode= @tag_h+$hierarchicalLevel', | 465 '$nameFromNode= @tag_h+$hierarchicalLevel', |
466 speak: '!relativePitch(hierarchicalLevel)' + | 466 speak: '!relativePitch(hierarchicalLevel)' + |
467 ' $nameOrDescendants= @tag_h+$hierarchicalLevel' | 467 ' $nameOrDescendants= @tag_h+$hierarchicalLevel' |
468 }, | 468 }, |
469 inlineTextBox: { | 469 inlineTextBox: { |
470 speak: '$name=' | 470 speak: '$name=' |
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1428 for (var j = uniqueAncestors.length - 2, hashNode; | 1428 for (var j = uniqueAncestors.length - 2, hashNode; |
1429 (hashNode = uniqueAncestors[j]); | 1429 (hashNode = uniqueAncestors[j]); |
1430 j--) | 1430 j--) |
1431 enteredRoleSet[hashNode.role] = true; | 1431 enteredRoleSet[hashNode.role] = true; |
1432 | 1432 |
1433 for (var i = 0, formatPrevNode; | 1433 for (var i = 0, formatPrevNode; |
1434 (formatPrevNode = prevUniqueAncestors[i]); | 1434 (formatPrevNode = prevUniqueAncestors[i]); |
1435 i++) { | 1435 i++) { |
1436 // This prevents very repetitive announcements. | 1436 // This prevents very repetitive announcements. |
1437 if (enteredRoleSet[formatPrevNode.role] || | 1437 if (enteredRoleSet[formatPrevNode.role] || |
| 1438 node.role == formatPrevNode.role || |
1438 localStorage['useVerboseMode'] == 'false') | 1439 localStorage['useVerboseMode'] == 'false') |
1439 continue; | 1440 continue; |
1440 | 1441 |
1441 var roleBlock = getMergedRoleBlock(formatPrevNode.role); | 1442 var roleBlock = getMergedRoleBlock(formatPrevNode.role); |
1442 if (roleBlock.leave && localStorage['useVerboseMode'] == 'true') | 1443 if (roleBlock.leave && localStorage['useVerboseMode'] == 'true') |
1443 this.format_(formatPrevNode, roleBlock.leave, buff, prevNode); | 1444 this.format_(formatPrevNode, roleBlock.leave, buff, prevNode); |
1444 } | 1445 } |
1445 | 1446 |
1446 var enterOutputs = []; | 1447 var enterOutputs = []; |
1447 var enterRole = {}; | 1448 var enterRole = {}; |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 break; | 1707 break; |
1707 } | 1708 } |
1708 earconFinder = earconFinder.parent; | 1709 earconFinder = earconFinder.parent; |
1709 } | 1710 } |
1710 } | 1711 } |
1711 return null; | 1712 return null; |
1712 } | 1713 } |
1713 }; | 1714 }; |
1714 | 1715 |
1715 }); // goog.scope | 1716 }); // goog.scope |
OLD | NEW |