| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
|
| index a12746031dc1b2101ed3beaa8174a5a0da17b8e4..164dab8246699c3647e7f4a03f43596dce38e5b1 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
|
| @@ -198,6 +198,7 @@ CommandHandler.onCommand = function(command) {
|
| var dir = Dir.FORWARD;
|
| var pred = null;
|
| var predErrorMsg = undefined;
|
| + var rootPred = AutomationPredicate.root;
|
| var speechProps = {};
|
| switch (command) {
|
| case 'nextCharacter':
|
| @@ -466,6 +467,102 @@ CommandHandler.onCommand = function(command) {
|
| return false;
|
| }
|
| break;
|
| + case 'fullyDescribe':
|
| + var o = new Output();
|
| + o.withContextFirst()
|
| + .withRichSpeechAndBraille(current, null, Output.EventType.NAVIGATE)
|
| + .go();
|
| + return false;
|
| +
|
| + // Table commands.
|
| + case 'previousRow':
|
| + dir = Dir.BACKWARD;
|
| + var tableOpts = {row: true, dir: dir};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + predErrorMsg = 'no_cell_above';
|
| + rootPred = AutomationPredicate.table;
|
| + break;
|
| + case 'previousCol':
|
| + dir = Dir.BACKWARD;
|
| + var tableOpts = {col: true, dir: dir};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + predErrorMsg = 'no_cell_left';
|
| + rootPred = AutomationPredicate.row;
|
| + break;
|
| + case 'nextRow':
|
| + dir = Dir.FORWARD;
|
| + var tableOpts = {row: true, dir: dir};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + predErrorMsg = 'no_cell_below';
|
| + rootPred = AutomationPredicate.table;
|
| + break;
|
| + case 'nextCol':
|
| + dir = Dir.FORWARD;
|
| + var tableOpts = {col: true, dir: dir};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + predErrorMsg = 'no_cell_right';
|
| + rootPred = AutomationPredicate.row;
|
| + break;
|
| + case 'goToRowFirstCell':
|
| + case 'goToRowLastCell':
|
| + var node = current.start.node;
|
| + while (node && node.role != RoleType.row)
|
| + node = node.parent;
|
| + if (!node)
|
| + break;
|
| + var end = AutomationUtil.findNodePost(node,
|
| + command == 'goToRowLastCell' ? Dir.BACKWARD : Dir.FORWARD,
|
| + AutomationPredicate.leaf);
|
| + if (end)
|
| + current = cursors.Range.fromNode(end);
|
| + break;
|
| + case 'goToColFirstCell':
|
| + dir = Dir.FORWARD;
|
| + var node = current.start.node;
|
| + while (node && node.role != RoleType.table)
|
| + node = node.parent;
|
| + if (!node || !node.firstChild)
|
| + return false;
|
| + var tableOpts = {col: true, dir: dir, end: true};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + current = cursors.Range.fromNode(node.firstChild);
|
| + // Should not be outputted.
|
| + predErrorMsg = 'no_cell_above';
|
| + rootPred = AutomationPredicate.table;
|
| + break;
|
| + case 'goToColLastCell':
|
| + dir = Dir.BACKWARD;
|
| + var node = current.start.node;
|
| + while (node && node.role != RoleType.table)
|
| + node = node.parent;
|
| + if (!node || !node.lastChild)
|
| + return false;
|
| + var tableOpts = {col: true, dir: dir, end: true};
|
| + pred = AutomationPredicate.makeTableCellPredicate(
|
| + current.start.node, tableOpts);
|
| + current = cursors.Range.fromNode(node.lastChild);
|
| + // Should not be outputted.
|
| + predErrorMsg = 'no_cell_below';
|
| + rootPred = AutomationPredicate.table;
|
| + break;
|
| + case 'goToFirstCell':
|
| + case 'goToLastCell':
|
| + node = current.start.node;
|
| + while (node && node.role != RoleType.table)
|
| + node = node.parent;
|
| + if (!node)
|
| + break;
|
| + var end = AutomationUtil.findNodePost(node,
|
| + command == 'goToLastCell' ? Dir.BACKWARD : Dir.FORWARD,
|
| + AutomationPredicate.leaf);
|
| + if (end)
|
| + current = cursors.Range.fromNode(end);
|
| + break;
|
| default:
|
| return true;
|
| }
|
|
|