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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js

Issue 1622803002: Cleanup AutomationUtil.findNodeUntil, fix wrapping when moving by line, (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview ChromeVox utilities for the automation extension API. 6 * @fileoverview ChromeVox utilities for the automation extension API.
7 */ 7 */
8 8
9 goog.provide('AutomationUtil'); 9 goog.provide('AutomationUtil');
10 10
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 return true; 108 return true;
109 }; 109 };
110 110
111 var walker = new AutomationTreeWalker(cur, dir, restrictions); 111 var walker = new AutomationTreeWalker(cur, dir, restrictions);
112 return walker.next().node; 112 return walker.next().node;
113 }; 113 };
114 114
115 /** 115 /**
116 * Given nodes a_1, ..., a_n starting at |cur| in pre order traversal, apply 116 * Given nodes a_1, ..., a_n starting at |cur| in pre order traversal, apply
117 * |pred| to a_i and a_(i - 1) until |pred| is satisfied. Returns a_(i - 1) or 117 * |pred| to a_i and a_(i - 1) until |pred| is satisfied. Returns a_(i - 1) or
118 * a_i (depending on opt_options.before) or null if no match was found. 118 * a_i (depending on opt_before) or null if no match was found.
119 * @param {!AutomationNode} cur 119 * @param {!AutomationNode} cur
120 * @param {Dir} dir 120 * @param {Dir} dir
121 * @param {AutomationPredicate.Binary} pred 121 * @param {AutomationPredicate.Binary} pred
122 * @param {{filter: (AutomationPredicate.Unary|undefined), 122 * @param {boolean=} opt_before True to return a_(i - 1); a_i otherwise.
123 * before: boolean?}=} opt_options 123 * Defaults to false.
124 * filter - Filters which candidate nodes to consider. Defaults to leaf
125 * only.
126 * before - True to return a_(i - 1); a_i otherwise. Defaults to false.
127 * @return {AutomationNode} 124 * @return {AutomationNode}
128 */ 125 */
129 AutomationUtil.findNodeUntil = function(cur, dir, pred, opt_options) { 126 AutomationUtil.findNodeUntil = function(cur, dir, pred, opt_before) {
130 opt_options = 127 var before = cur;
131 opt_options || {filter: AutomationPredicate.leaf, before: false}; 128 var after = before;
132 if (!opt_options.filter) 129 do {
133 opt_options.filter = AutomationPredicate.leaf; 130 before = after;
134 131 after = AutomationUtil.findNextNode(before, dir, AutomationPredicate.leaf);
135 var before = null; 132 } while (after && !pred(before, after));
136 var after = null; 133 return opt_before ? before : after;
137 var prev = cur;
138 AutomationUtil.findNextNode(cur,
139 dir,
140 function(candidate) {
141 if (!opt_options.filter(candidate))
142 return false;
143
144 var satisfied = pred(prev, candidate);
145
146 prev = candidate;
147 if (!satisfied)
148 before = candidate;
149 else
150 after = candidate;
151 return satisfied;
152 },
153 {leaf: AutomationPredicate.leaf, skipInitialSubtree: true});
154
155 return opt_options.before ? before : after;
156 }; 134 };
157 135
158 /** 136 /**
159 * Returns an array containing ancestors of node starting at root down to node. 137 * Returns an array containing ancestors of node starting at root down to node.
160 * @param {!AutomationNode} node 138 * @param {!AutomationNode} node
161 * @return {!Array<AutomationNode>} 139 * @return {!Array<AutomationNode>}
162 */ 140 */
163 AutomationUtil.getAncestors = function(node) { 141 AutomationUtil.getAncestors = function(node) {
164 var ret = []; 142 var ret = [];
165 var candidate = node; 143 var candidate = node;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 a = a.parent.root; 259 a = a.parent.root;
282 260
283 b = b.root; 261 b = b.root;
284 while (b && b.parent && AutomationUtil.isInSameTree(b.parent, b)) 262 while (b && b.parent && AutomationUtil.isInSameTree(b.parent, b))
285 b = b.parent.root; 263 b = b.parent.root;
286 264
287 return a == b; 265 return a == b;
288 }; 266 };
289 267
290 }); // goog.scope 268 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698