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 b855f90952ceefe7645cd876159344e5175d1d11..5d0eeb16de6dd19539a69ef6ac48035f18f6a6e0 100644 |
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js |
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js |
@@ -37,10 +37,10 @@ cursors.Unit = { |
/** A leaf node. */ |
NODE: 'node', |
- /** A leaf DOM-node. */ |
- DOM_NODE: 'dom_node', |
- |
- /** Formed by a set of leaf nodes that are inline. */ |
+ /** |
+ * A node or in line textbox that immediately precedes or follows a visual |
+ * line break. |
+ */ |
LINE: 'line' |
}; |
@@ -218,8 +218,7 @@ cursors.Cursor.prototype = { |
var newNode = originalNode; |
var newIndex = this.index_; |
- if ((unit != Unit.NODE || unit != Unit.DOM_NODE) && |
- newIndex === cursors.NODE_INDEX) |
+ if (unit != Unit.NODE && newIndex === cursors.NODE_INDEX) |
newIndex = 0; |
switch (unit) { |
@@ -307,16 +306,13 @@ cursors.Cursor.prototype = { |
} |
break; |
case Unit.NODE: |
- case Unit.DOM_NODE: |
switch (movement) { |
case Movement.BOUND: |
newIndex = dir == Dir.FORWARD ? this.getText().length - 1 : 0; |
break; |
case Movement.DIRECTIONAL: |
- var pred = unit == Unit.NODE ? |
- AutomationPredicate.leaf : AutomationPredicate.object; |
newNode = AutomationUtil.findNextNode( |
- newNode, dir, pred) || originalNode; |
+ newNode, dir, AutomationPredicate.object) || originalNode; |
newIndex = cursors.NODE_INDEX; |
break; |
} |
@@ -387,9 +383,15 @@ cursors.WrappingCursor.prototype = { |
return this; |
// Regular movement. |
- if (!AutomationPredicate.root(this.node) || dir == Dir.FORWARD) |
+ if (!AutomationPredicate.root(this.node) || |
+ dir == Dir.FORWARD || |
+ movement == Movement.BOUND) |
result = cursors.Cursor.prototype.move.call(this, unit, movement, dir); |
+ // Moving to the bounds of a unit never wraps. |
+ if (movement == Movement.BOUND) |
+ return new cursors.WrappingCursor(result.node, result.index); |
+ |
// There are two cases for wrapping: |
// 1. moving forwards from the last element. |
// 2. moving backwards from the first element. |
@@ -398,7 +400,7 @@ cursors.WrappingCursor.prototype = { |
// 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 ? |
+ var pred = unit == Unit.NODE ? |
AutomationPredicate.object : AutomationPredicate.leaf; |
var endpoint = this.node; |
if (!endpoint) |
@@ -568,7 +570,6 @@ cursors.Range.prototype = { |
newEnd = newStart.move(unit, Movement.BOUND, Dir.FORWARD); |
break; |
case Unit.NODE: |
- case Unit.DOM_NODE: |
newStart = newStart.move(unit, Movement.DIRECTIONAL, dir); |
newEnd = newStart; |
break; |