| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 A tree walker over the automation tree. | 6 * @fileoverview A tree walker over the automation tree. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 goog.provide('AutomationTreeWalker'); | 9 goog.provide('AutomationTreeWalker'); |
| 10 goog.provide('AutomationTreeWalkerPhase'); | 10 goog.provide('AutomationTreeWalkerPhase'); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 this.phase != AutomationTreeWalkerPhase.OTHER) | 101 this.phase != AutomationTreeWalkerPhase.OTHER) |
| 102 return false; | 102 return false; |
| 103 | 103 |
| 104 if (restrictions.visit) | 104 if (restrictions.visit) |
| 105 return restrictions.visit(node); | 105 return restrictions.visit(node); |
| 106 | 106 |
| 107 return true; | 107 return true; |
| 108 }; | 108 }; |
| 109 /** @type {AutomationPredicate.Unary} @private */ | 109 /** @type {AutomationPredicate.Unary} @private */ |
| 110 this.leafPred_ = restrictions.leaf ? restrictions.leaf : | 110 this.leafPred_ = restrictions.leaf ? restrictions.leaf : |
| 111 AutomationTreeWalker.falsePredicate_; | 111 AutomationTreeWalker.falsePredicate_; |
| 112 /** @type {AutomationPredicate.Unary} @private */ | 112 /** @type {AutomationPredicate.Unary} @private */ |
| 113 this.rootPred_ = restrictions.root ? restrictions.root : | 113 this.rootPred_ = restrictions.root ? restrictions.root : |
| 114 AutomationTreeWalker.falsePredicate_; | 114 AutomationTreeWalker.falsePredicate_; |
| 115 /** @const {boolean} @private */ | 115 /** @const {boolean} @private */ |
| 116 this.skipInitialAncestry_ = restrictions.skipInitialAncestry || false; | 116 this.skipInitialAncestry_ = restrictions.skipInitialAncestry || false; |
| 117 /** @const {boolean} @private */ | 117 /** @const {boolean} @private */ |
| 118 this.skipInitialSubtree_ = restrictions.skipInitialSubtree || false; | 118 this.skipInitialSubtree_ = restrictions.skipInitialSubtree || false; |
| 119 }; | 119 }; |
| 120 | 120 |
| 121 /** | 121 /** |
| 122 * @param {!chrome.automation.AutomationNode} node | 122 * @param {!chrome.automation.AutomationNode} node |
| 123 * @return {boolean} | 123 * @return {boolean} |
| 124 * @private | 124 * @private |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 this.node_ = searchNode.nextSibling; | 187 this.node_ = searchNode.nextSibling; |
| 188 return; | 188 return; |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Update the phase based on the parent if needed since we may exit below. | 191 // Update the phase based on the parent if needed since we may exit below. |
| 192 if (searchNode.parent == this.initialNode_) | 192 if (searchNode.parent == this.initialNode_) |
| 193 this.phase_ = AutomationTreeWalkerPhase.OTHER; | 193 this.phase_ = AutomationTreeWalkerPhase.OTHER; |
| 194 | 194 |
| 195 // Exit if we encounter a root-like node and are not searching descendants | 195 // Exit if we encounter a root-like node and are not searching descendants |
| 196 // of the initial node. | 196 // of the initial node. |
| 197 if (searchNode.parent && | 197 if (searchNode.parent && this.rootPred_(searchNode.parent) && |
| 198 this.rootPred_(searchNode.parent) && | |
| 199 this.phase_ != AutomationTreeWalkerPhase.DESCENDANT) | 198 this.phase_ != AutomationTreeWalkerPhase.DESCENDANT) |
| 200 break; | 199 break; |
| 201 | 200 |
| 202 searchNode = searchNode.parent; | 201 searchNode = searchNode.parent; |
| 203 } | 202 } |
| 204 this.node_ = null; | 203 this.node_ = null; |
| 205 }, | 204 }, |
| 206 | 205 |
| 207 /** | 206 /** |
| 208 * @param {!chrome.automation.AutomationNode} node | 207 * @param {!chrome.automation.AutomationNode} node |
| (...skipping 10 matching lines...) Expand all Loading... |
| 219 this.node_ = node; | 218 this.node_ = node; |
| 220 return; | 219 return; |
| 221 } | 220 } |
| 222 if (node.parent && this.backwardAncestor_ == node.parent) { | 221 if (node.parent && this.backwardAncestor_ == node.parent) { |
| 223 this.phase_ = AutomationTreeWalkerPhase.ANCESTOR; | 222 this.phase_ = AutomationTreeWalkerPhase.ANCESTOR; |
| 224 this.backwardAncestor_ = node.parent.parent || null; | 223 this.backwardAncestor_ = node.parent.parent || null; |
| 225 } | 224 } |
| 226 this.node_ = node.parent || null; | 225 this.node_ = node.parent || null; |
| 227 } | 226 } |
| 228 }; | 227 }; |
| OLD | NEW |