| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
|
| index b120e2abcbfc4705f984b0665212a5f11b26d59e..c2357110015e133a4ed99de82c503b2804385ce3 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
|
| @@ -766,25 +766,26 @@ Background.prototype = {
|
| setFocusToRange_: function(range, prevRange) {
|
| var start = range.start.node;
|
| var end = range.end.node;
|
| - if (start.state.focused || end.state.focused)
|
| - return;
|
| -
|
| - var isFocusableLinkOrControl = function(node) {
|
| - return node.state.focusable &&
|
| - AutomationPredicate.linkOrControl(node);
|
| - };
|
|
|
| // First, see if we've crossed a root. Remove once webview handles focus
|
| // correctly.
|
| - if (prevRange && prevRange.start.node) {
|
| + if (prevRange && prevRange.start.node && start) {
|
| var entered = AutomationUtil.getUniqueAncestors(
|
| prevRange.start.node, start);
|
| var embeddedObject = entered.find(function(f) {
|
| return f.role == RoleType.embeddedObject; });
|
| - if (embeddedObject)
|
| + if (embeddedObject && !embeddedObject.state.focused)
|
| embeddedObject.focus();
|
| }
|
|
|
| + if (start.state.focused || end.state.focused)
|
| + return;
|
| +
|
| + var isFocusableLinkOrControl = function(node) {
|
| + return node.state.focusable &&
|
| + AutomationPredicate.linkOrControl(node);
|
| + };
|
| +
|
| // Next, try to focus the start or end node.
|
| if (!AutomationPredicate.structuralContainer(start) &&
|
| start.state.focusable) {
|
|
|