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

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

Issue 2028173003: Refine ChromeVox's treatment of containers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/cursors.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js
index a82292baecbfc92acc99ff1d4e4b509148425ab7..8f83cdab4e8cbce6f19cfafa045c42b5d08b3f5c 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js
@@ -255,7 +255,7 @@ cursors.Cursor.prototype = {
break;
case Movement.DIRECTIONAL:
var pred = unit == Unit.NODE ?
- AutomationPredicate.leaf : AutomationPredicate.element;
+ AutomationPredicate.leaf : AutomationPredicate.object;
newNode = AutomationUtil.findNextNode(
newNode, dir, pred) || this.node_;
newIndex = cursors.NODE_INDEX;
@@ -326,31 +326,42 @@ cursors.WrappingCursor.prototype = {
var result = this;
// Regular movement.
- if (!AutomationUtil.isTraversalRoot(this.node) || dir == Dir.FORWARD)
+ if (!AutomationPredicate.root(this.node) || dir == Dir.FORWARD)
result = cursors.Cursor.prototype.move.call(this, unit, movement, dir);
// There are two cases for wrapping:
// 1. moving forwards from the last element.
- // 2. moving backwards from the document root.
+ // 2. moving backwards from the first element.
// Both result in |move| returning the same cursor.
// For 1, simply place the new cursor on the document node.
- // For 2, try to descend to the first leaf-like object.
+ // For 2, place range on the root (if not already there). If at root,
+ // try to descend to the first leaf-like object.
if (movement == Movement.DIRECTIONAL && result.equals(this)) {
var pred = unit == Unit.DOM_NODE ?
- AutomationPredicate.element : AutomationPredicate.leaf;
+ AutomationPredicate.object : AutomationPredicate.leaf;
var endpoint = this.node;
// Case 1: forwards (find the root-like node).
- while (!AutomationUtil.isTraversalRoot(endpoint) && endpoint.parent)
+ while (!AutomationPredicate.root(endpoint) && endpoint.parent)
endpoint = endpoint.parent;
- // Case 2: backward (sync downwards to a leaf).
- if (dir == Dir.BACKWARD)
- endpoint = AutomationUtil.findNodePre(endpoint, dir, pred) || endpoint;
+ // Always play a wrap earcon when moving forward.
+ var playEarcon = dir == Dir.FORWARD;
+
+ // Case 2: backward (sync downwards to a leaf), if already on the root.
+ if (dir == Dir.BACKWARD && endpoint == this.node_) {
+ playEarcon = true;
+ endpoint = AutomationUtil.findNodePre(endpoint,
+ dir,
+ function(n) {
+ return pred(n) && !AutomationPredicate.shouldIgnoreNode(n);
+ }) || endpoint;
+ }
- cvox.ChromeVox.earcons.playEarcon(cvox.Earcon.WRAP);
- return new cursors.WrappingCursor(endpoint, cursors.NODE_INDEX);
+ if (playEarcon)
+ cvox.ChromeVox.earcons.playEarcon(cvox.Earcon.WRAP);
+ return new cursors.WrappingCursor(endpoint, cursors.NODE_INDEX);
}
return new cursors.WrappingCursor(result.node, result.index);
}
@@ -474,8 +485,8 @@ cursors.Range.prototype = {
var newEnd;
switch (unit) {
case Unit.CHARACTER:
- newStart = newStart.move(unit, Movement.BOUND, dir);
- newEnd = newStart.move(unit, Movement.BOUND, Dir.FORWARD);
+ newStart = newStart.move(unit, Movement.DIRECTIONAL, dir);
+ newEnd = newStart.move(unit, Movement.DIRECTIONAL, Dir.FORWARD);
// Character crossed a node; collapses to the end of the node.
if (newStart.node !== newEnd.node)
newEnd = new cursors.Cursor(newStart.node, newStart.index + 1);

Powered by Google App Engine
This is Rietveld 408576698