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

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.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/automation_util.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
index c73cfd2ba0ebb5571b711558aab3fb9d880e04ed..354a58fc962212e71e3381f6fea0096027f73ced 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
@@ -77,17 +77,26 @@ AutomationUtil.findNodePost = function(cur, dir, pred) {
/**
* Find the next node in the given direction in depth first order.
+ *
+ * Let D be the dfs linearization of |cur.root|. Then, let F be the list after
+ * applying |pred| as a filter to D. This method will return the directed next
+ * node of |cur| in F.
+ * The restrictions option will further filter F. For example,
+ * |skipInitialSubtree| will remove any |pred| matches in the subtree of |cur|
+ * from F.
* @param {!AutomationNode} cur Node to begin the search from.
* @param {Dir} dir
* @param {AutomationPredicate.Unary} pred A predicate to apply
* to a candidate node.
* @param {AutomationTreeWalkerRestriction=} opt_restrictions |leaf|, |root|,
- * and |skipInitialSubtree| are valid restrictions used when finding the
- * next node. If not supplied, the leaf predicate returns true for nodes
- * matched by |pred| or |AutomationPredicate.container|. This is typically
- * desirable in most situations.
- * If not supplied, the root predicate gets set to
- * |AutomationUtil.isTraversalRoot|.
+ * |skipInitialAncestry|, and |skipInitialSubtree| are valid restrictions
+ * used when finding the next node.
+ * By default:
+ * the root predicate ges set to |AutomationPredicate.root|.
+ * |skipInitialSubtree| is false if |cur| is a container or matches
+ * |pred|. This alleviates the caller from syncing forwards.
+ * Leaves are nodes matched by |prred| which are not also containers.
+ * This takes care of syncing backwards.
* @return {AutomationNode}
*/
AutomationUtil.findNextNode = function(cur, dir, pred, opt_restrictions) {
@@ -95,21 +104,19 @@ AutomationUtil.findNextNode = function(cur, dir, pred, opt_restrictions) {
opt_restrictions = opt_restrictions || {leaf: undefined,
root: undefined,
visit: undefined,
- skipInitialSubtree: !AutomationPredicate.container(cur)};
+ skipInitialSubtree: !AutomationPredicate.container(cur) && pred(cur)};
+
+ restrictions.root = opt_restrictions.root || AutomationPredicate.root;
restrictions.leaf = opt_restrictions.leaf || function(node) {
// Treat nodes matched by |pred| as leaves except for containers.
return !AutomationPredicate.container(node) && pred(node);
};
- restrictions.root = opt_restrictions.root || AutomationUtil.isTraversalRoot;
restrictions.skipInitialSubtree = opt_restrictions.skipInitialSubtree;
restrictions.skipInitialAncestry = opt_restrictions.skipInitialAncestry;
restrictions.visit = function(node) {
- if (pred(node) && !AutomationPredicate.shouldIgnoreLeaf(node))
- return true;
- if (AutomationPredicate.container(node))
- return true;
+ return pred(node) && !AutomationPredicate.shouldIgnoreNode(node);
};
var walker = new AutomationTreeWalker(cur, dir, restrictions);
@@ -226,26 +233,6 @@ AutomationUtil.isInSameTree = function(a, b) {
};
/**
- * Returns whether the given node should not be crossed when performing
- * traversals up the ancestry chain.
- * @param {AutomationNode} node
- * @return {boolean}
- */
-AutomationUtil.isTraversalRoot = function(node) {
- switch (node.role) {
- case RoleType.dialog:
- case RoleType.window:
- return true;
- case RoleType.toolbar:
- return node.root.role == RoleType.desktop;
- case RoleType.rootWebArea:
- return !node.parent || node.parent.root.role == RoleType.desktop;
- default:
- return false;
- }
-};
-
-/**
* Determines whether the two given nodes come from the same webpage.
* @param {AutomationNode} a
* @param {AutomationNode} b

Powered by Google App Engine
This is Rietveld 408576698