| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
|
| index d3fd9de3d1c930613dafdfa71934ab8cd54a431e..3ce0930b59b0a7558d0b8cf2483950d7b42c6c20 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
|
| @@ -724,6 +724,21 @@ Output.forceModeForNextSpeechUtterance = function(mode) {
|
| Output.forceModeForNextSpeechUtterance_ = mode;
|
| };
|
|
|
| +/**
|
| + * For a given automation property, return true if the value
|
| + * represents something 'truthy', e.g.: for checked:
|
| + * 'true'|'mixed' -> true
|
| + * 'false'|undefined -> false
|
| + */
|
| +Output.isTruthy = function(node, attrib) {
|
| + switch(attrib) {
|
| + case 'checked':
|
| + return node.checked && node.checked !== 'false';
|
| + default:
|
| + return node[attrib] !== undefined || node.state[attrib];
|
| + }
|
| +};
|
| +
|
| Output.prototype = {
|
| /**
|
| * @return {boolean} True if there's any speech that will be output.
|
| @@ -1156,20 +1171,16 @@ Output.prototype = {
|
| }
|
| } else if (token == 'checked') {
|
| var msg;
|
| - var ariaChecked = node.htmlAttributes['aria-checked'];
|
| - switch (ariaChecked) {
|
| + switch (node.checked) {
|
| case 'mixed':
|
| - msg = 'aria_checked_mixed';
|
| + msg = 'checked_mixed';
|
| break;
|
| case 'true':
|
| - msg = 'aria_checked_true';
|
| - break;
|
| - case 'false':
|
| - msg = 'aria_checked_false';
|
| + msg = 'checked_true';
|
| break;
|
| default:
|
| - msg = node.state[StateType.CHECKED] ?
|
| - 'aria_checked_true' : 'aria_checked_false';
|
| + msg = 'checked_false';
|
| + break;
|
| }
|
| this.format_(node, '@' + msg, buff);
|
| } else if (token == 'state') {
|
| @@ -1301,7 +1312,7 @@ Output.prototype = {
|
| if (token == 'if') {
|
| var cond = tree.firstChild;
|
| var attrib = cond.value.slice(1);
|
| - if (node[attrib] !== undefined || node.state[attrib])
|
| + if (Output.isTruthy(node, attrib))
|
| this.format_(node, cond.nextSibling, buff);
|
| else
|
| this.format_(node, cond.nextSibling.nextSibling, buff);
|
|
|