| 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 2cac7aa204ebb29e16a4e68a61a0f9bf6c6a0409..90c9167f42a1fea3e1e7f3fb679d8c47330c9bca 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js
|
| @@ -236,7 +236,7 @@ cursors.Cursor.prototype = {
|
| switch (movement) {
|
| case Movement.BOUND:
|
| newNode = AutomationUtil.findNodeUntil(newNode, dir,
|
| - AutomationPredicate.linebreak, {before: true});
|
| + AutomationPredicate.linebreak, true);
|
| newNode = newNode || this.node_;
|
| newIndex =
|
| dir == Dir.FORWARD ? this.getText(newNode).length : 0;
|
| @@ -288,10 +288,17 @@ cursors.WrappingCursor.prototype = {
|
| if (movement == Movement.DIRECTIONAL && result.equals(this)) {
|
| var pred = unit == Unit.DOM_NODE ?
|
| AutomationPredicate.leafDomNode : AutomationPredicate.leaf;
|
| - var root = this.node;
|
| - while (!AutomationUtil.isTraversalRoot(root) && root.parent)
|
| - root = root.parent;
|
| - var wrappedNode = AutomationUtil.findNodePre(root, dir, pred);
|
| + var endpoint = this.node;
|
| + while (!AutomationUtil.isTraversalRoot(endpoint) && endpoint.parent)
|
| + endpoint = endpoint.parent;
|
| + if (dir == Dir.BACKWARD) {
|
| + while (endpoint.lastChild)
|
| + endpoint = endpoint.lastChild;
|
| + }
|
| + var wrappedNode = endpoint;
|
| + if (!pred(wrappedNode))
|
| + wrappedNode = AutomationUtil.findNextNode(endpoint, dir, pred);
|
| +
|
| if (wrappedNode) {
|
| cvox.ChromeVox.earcons.playEarcon(cvox.Earcon.WRAP);
|
| return new cursors.WrappingCursor(wrappedNode, cursors.NODE_INDEX);
|
|
|