| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js
|
| index 800957df29ca4bd9559ba6b8e051cb1ebc3e4bf0..2fd4821a20df7baf317f4c81b13d99a283f8294a 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js
|
| @@ -168,6 +168,21 @@ AutomationPredicate.leafDomNode = function(node) {
|
| node.role == RoleType.staticText;
|
| };
|
|
|
| +
|
| +/**
|
| + * Matches nodes that are containers that should be ignored during
|
| + * element navigation.
|
| + * @param {!AutomationNode} node
|
| + * @return {boolean}
|
| + */
|
| +AutomationPredicate.ignoredContainer = function(node) {
|
| + return (node.role == RoleType.rootWebArea ||
|
| + node.role == RoleType.embeddedObject ||
|
| + node.role == RoleType.iframe ||
|
| + node.role == RoleType.iframePresentational ||
|
| + node.role == RoleType.embeddedObject);
|
| +};
|
| +
|
| /**
|
| * Matches against nodes visited during element navigation. An element as
|
| * defined below, are all nodes that are focusable or static text. When used in
|
| @@ -177,7 +192,10 @@ AutomationPredicate.leafDomNode = function(node) {
|
| * @return {boolean}
|
| */
|
| AutomationPredicate.element = function(node) {
|
| - return (node.state .focusable && node.role != RoleType.rootWebArea) ||
|
| + if (AutomationPredicate.ignoredContainer(node))
|
| + return false;
|
| +
|
| + return node.state.focusable ||
|
| (AutomationPredicate.leafDomNode(node) &&
|
| (/\S+/.test(node.name) ||
|
| (node.role != RoleType.lineBreak &&
|
|
|