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

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js

Issue 2380073005: Support group and wrapping navigation. (Closed)
Patch Set: Update test expectations. Created 4 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 side-by-side diff with in-line comments
Download patch
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 4bf888349ae92e06c16f0e3ef46864f8823b9852..abeaf1eb730e362767afa39464a79b48a71dc9d7 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
@@ -200,6 +200,7 @@ CommandHandler.onCommand = function(command) {
var predErrorMsg = undefined;
var rootPred = AutomationPredicate.root;
var speechProps = {};
+ var skipSync = false;
switch (command) {
case 'nextCharacter':
speechProps['phoneticCharacters'] = true;
@@ -391,6 +392,16 @@ CommandHandler.onCommand = function(command) {
case 'previousObject':
current = current.move(cursors.Unit.NODE, Dir.BACKWARD);
break;
+ case 'previousGroup':
+ skipSync = true;
+ dir = Dir.BACKWARD;
+ pred = AutomationPredicate.group;
+ break;
+ case 'nextGroup':
+ skipSync = true;
+ dir = Dir.FORWARD;
+ pred = AutomationPredicate.group;
+ break;
case 'jumpToTop':
var node = AutomationUtil.findNodePost(
current.start.node.root, Dir.FORWARD, AutomationPredicate.leaf);
@@ -643,7 +654,7 @@ CommandHandler.onCommand = function(command) {
var node = AutomationUtil.findNextNode(
bound, dir, pred, {skipInitialAncestry: true});
- if (node) {
+ if (node && !skipSync) {
node = AutomationUtil.findNodePre(
node, Dir.FORWARD, AutomationPredicate.object) ||
node;
@@ -652,11 +663,29 @@ CommandHandler.onCommand = function(command) {
if (node) {
current = cursors.Range.fromNode(node);
} else {
- if (predErrorMsg) {
+ cvox.ChromeVox.earcons.playEarcon(cvox.Earcon.WRAP);
+ var root = AutomationUtil.getTopLevelRoot(bound) || bound.root;
+ if (dir == Dir.FORWARD) {
+ bound = root;
+ } else {
+ bound = AutomationUtil.findNodePost(
+ root, dir, AutomationPredicate.leaf) || bound;
+ }
+ node = AutomationUtil.findNextNode(
+ bound, dir, pred, {skipInitialAncestry: true});
+
+ if (node && !skipSync) {
+ node = AutomationUtil.findNodePre(
+ node, Dir.FORWARD, AutomationPredicate.object) || node;
+ }
+
+ if (node) {
+ current = cursors.Range.fromNode(node);
+ } else if (predErrorMsg) {
cvox.ChromeVox.tts.speak(
Msgs.getMsg(predErrorMsg), cvox.QueueMode.FLUSH);
- }
return false;
+ }
}
}
}

Powered by Google App Engine
This is Rietveld 408576698