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

Side by Side Diff: Source/core/dom/TreeWalker.cpp

Issue 1197723002: NodeFilter acceptNode return type changed to unsigned (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Change sign in the calls for NodeFIlter.acceptNode Created 5 years, 6 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
« no previous file with comments | « Source/core/dom/NodeIteratorBase.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) 3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no)
4 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4 * Copyright (C) 2001 Peter Kelly (pmk@post.com)
5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 return m_current.get(); 54 return m_current.get();
55 } 55 }
56 56
57 Node* TreeWalker::parentNode(ExceptionState& exceptionState) 57 Node* TreeWalker::parentNode(ExceptionState& exceptionState)
58 { 58 {
59 RefPtrWillBeRawPtr<Node> node = m_current; 59 RefPtrWillBeRawPtr<Node> node = m_current;
60 while (node != root()) { 60 while (node != root()) {
61 node = node->parentNode(); 61 node = node->parentNode();
62 if (!node) 62 if (!node)
63 return 0; 63 return 0;
64 short acceptNodeResult = acceptNode(node.get(), exceptionState); 64 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
65 if (exceptionState.hadException()) 65 if (exceptionState.hadException())
66 return 0; 66 return 0;
67 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 67 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
68 return setCurrent(node.release()); 68 return setCurrent(node.release());
69 } 69 }
70 return 0; 70 return 0;
71 } 71 }
72 72
73 Node* TreeWalker::firstChild(ExceptionState& exceptionState) 73 Node* TreeWalker::firstChild(ExceptionState& exceptionState)
74 { 74 {
75 for (RefPtrWillBeRawPtr<Node> node = m_current->firstChild(); node; ) { 75 for (RefPtrWillBeRawPtr<Node> node = m_current->firstChild(); node; ) {
76 short acceptNodeResult = acceptNode(node.get(), exceptionState); 76 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
77 if (exceptionState.hadException()) 77 if (exceptionState.hadException())
78 return 0; 78 return 0;
79 switch (acceptNodeResult) { 79 switch (acceptNodeResult) {
80 case NodeFilter::FILTER_ACCEPT: 80 case NodeFilter::FILTER_ACCEPT:
81 m_current = node.release(); 81 m_current = node.release();
82 return m_current.get(); 82 return m_current.get();
83 case NodeFilter::FILTER_SKIP: 83 case NodeFilter::FILTER_SKIP:
84 if (node->hasChildren()) { 84 if (node->hasChildren()) {
85 node = node->firstChild(); 85 node = node->firstChild();
86 continue; 86 continue;
(...skipping 12 matching lines...) Expand all
99 return 0; 99 return 0;
100 node = parent; 100 node = parent;
101 } while (node); 101 } while (node);
102 } 102 }
103 return 0; 103 return 0;
104 } 104 }
105 105
106 Node* TreeWalker::lastChild(ExceptionState& exceptionState) 106 Node* TreeWalker::lastChild(ExceptionState& exceptionState)
107 { 107 {
108 for (RefPtrWillBeRawPtr<Node> node = m_current->lastChild(); node; ) { 108 for (RefPtrWillBeRawPtr<Node> node = m_current->lastChild(); node; ) {
109 short acceptNodeResult = acceptNode(node.get(), exceptionState); 109 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
110 if (exceptionState.hadException()) 110 if (exceptionState.hadException())
111 return 0; 111 return 0;
112 switch (acceptNodeResult) { 112 switch (acceptNodeResult) {
113 case NodeFilter::FILTER_ACCEPT: 113 case NodeFilter::FILTER_ACCEPT:
114 m_current = node.release(); 114 m_current = node.release();
115 return m_current.get(); 115 return m_current.get();
116 case NodeFilter::FILTER_SKIP: 116 case NodeFilter::FILTER_SKIP:
117 if (node->lastChild()) { 117 if (node->lastChild()) {
118 node = node->lastChild(); 118 node = node->lastChild();
119 continue; 119 continue;
(...skipping 16 matching lines...) Expand all
136 return 0; 136 return 0;
137 } 137 }
138 138
139 Node* TreeWalker::previousSibling(ExceptionState& exceptionState) 139 Node* TreeWalker::previousSibling(ExceptionState& exceptionState)
140 { 140 {
141 RefPtrWillBeRawPtr<Node> node = m_current; 141 RefPtrWillBeRawPtr<Node> node = m_current;
142 if (node == root()) 142 if (node == root())
143 return 0; 143 return 0;
144 while (1) { 144 while (1) {
145 for (RefPtrWillBeRawPtr<Node> sibling = node->previousSibling(); sibling ; ) { 145 for (RefPtrWillBeRawPtr<Node> sibling = node->previousSibling(); sibling ; ) {
146 short acceptNodeResult = acceptNode(sibling.get(), exceptionState); 146 unsigned acceptNodeResult = acceptNode(sibling.get(), exceptionState );
147 if (exceptionState.hadException()) 147 if (exceptionState.hadException())
148 return 0; 148 return 0;
149 switch (acceptNodeResult) { 149 switch (acceptNodeResult) {
150 case NodeFilter::FILTER_ACCEPT: 150 case NodeFilter::FILTER_ACCEPT:
151 m_current = sibling.release(); 151 m_current = sibling.release();
152 return m_current.get(); 152 return m_current.get();
153 case NodeFilter::FILTER_SKIP: 153 case NodeFilter::FILTER_SKIP:
154 if (sibling->lastChild()) { 154 if (sibling->lastChild()) {
155 sibling = sibling->lastChild(); 155 sibling = sibling->lastChild();
156 node = sibling; 156 node = sibling;
157 continue; 157 continue;
158 } 158 }
159 break; 159 break;
160 case NodeFilter::FILTER_REJECT: 160 case NodeFilter::FILTER_REJECT:
161 break; 161 break;
162 } 162 }
163 sibling = sibling->previousSibling(); 163 sibling = sibling->previousSibling();
164 } 164 }
165 node = node->parentNode(); 165 node = node->parentNode();
166 if (!node || node == root()) 166 if (!node || node == root())
167 return 0; 167 return 0;
168 short acceptNodeResult = acceptNode(node.get(), exceptionState); 168 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
169 if (exceptionState.hadException()) 169 if (exceptionState.hadException())
170 return 0; 170 return 0;
171 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 171 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
172 return 0; 172 return 0;
173 } 173 }
174 } 174 }
175 175
176 Node* TreeWalker::nextSibling(ExceptionState& exceptionState) 176 Node* TreeWalker::nextSibling(ExceptionState& exceptionState)
177 { 177 {
178 RefPtrWillBeRawPtr<Node> node = m_current; 178 RefPtrWillBeRawPtr<Node> node = m_current;
179 if (node == root()) 179 if (node == root())
180 return 0; 180 return 0;
181 while (1) { 181 while (1) {
182 for (RefPtrWillBeRawPtr<Node> sibling = node->nextSibling(); sibling; ) { 182 for (RefPtrWillBeRawPtr<Node> sibling = node->nextSibling(); sibling; ) {
183 short acceptNodeResult = acceptNode(sibling.get(), exceptionState); 183 unsigned acceptNodeResult = acceptNode(sibling.get(), exceptionState );
184 if (exceptionState.hadException()) 184 if (exceptionState.hadException())
185 return 0; 185 return 0;
186 switch (acceptNodeResult) { 186 switch (acceptNodeResult) {
187 case NodeFilter::FILTER_ACCEPT: 187 case NodeFilter::FILTER_ACCEPT:
188 m_current = sibling.release(); 188 m_current = sibling.release();
189 return m_current.get(); 189 return m_current.get();
190 case NodeFilter::FILTER_SKIP: 190 case NodeFilter::FILTER_SKIP:
191 if (sibling->hasChildren()) { 191 if (sibling->hasChildren()) {
192 sibling = sibling->firstChild(); 192 sibling = sibling->firstChild();
193 node = sibling; 193 node = sibling;
194 continue; 194 continue;
195 } 195 }
196 break; 196 break;
197 case NodeFilter::FILTER_REJECT: 197 case NodeFilter::FILTER_REJECT:
198 break; 198 break;
199 } 199 }
200 sibling = sibling->nextSibling(); 200 sibling = sibling->nextSibling();
201 } 201 }
202 node = node->parentNode(); 202 node = node->parentNode();
203 if (!node || node == root()) 203 if (!node || node == root())
204 return 0; 204 return 0;
205 short acceptNodeResult = acceptNode(node.get(), exceptionState); 205 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
206 if (exceptionState.hadException()) 206 if (exceptionState.hadException())
207 return 0; 207 return 0;
208 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 208 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
209 return 0; 209 return 0;
210 } 210 }
211 } 211 }
212 212
213 Node* TreeWalker::previousNode(ExceptionState& exceptionState) 213 Node* TreeWalker::previousNode(ExceptionState& exceptionState)
214 { 214 {
215 RefPtrWillBeRawPtr<Node> node = m_current; 215 RefPtrWillBeRawPtr<Node> node = m_current;
216 while (node != root()) { 216 while (node != root()) {
217 while (Node* previousSibling = node->previousSibling()) { 217 while (Node* previousSibling = node->previousSibling()) {
218 node = previousSibling; 218 node = previousSibling;
219 short acceptNodeResult = acceptNode(node.get(), exceptionState); 219 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
220 if (exceptionState.hadException()) 220 if (exceptionState.hadException())
221 return 0; 221 return 0;
222 if (acceptNodeResult == NodeFilter::FILTER_REJECT) 222 if (acceptNodeResult == NodeFilter::FILTER_REJECT)
223 continue; 223 continue;
224 while (Node* lastChild = node->lastChild()) { 224 while (Node* lastChild = node->lastChild()) {
225 node = lastChild; 225 node = lastChild;
226 acceptNodeResult = acceptNode(node.get(), exceptionState); 226 acceptNodeResult = acceptNode(node.get(), exceptionState);
227 if (exceptionState.hadException()) 227 if (exceptionState.hadException())
228 return 0; 228 return 0;
229 if (acceptNodeResult == NodeFilter::FILTER_REJECT) 229 if (acceptNodeResult == NodeFilter::FILTER_REJECT)
230 break; 230 break;
231 } 231 }
232 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) { 232 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) {
233 m_current = node.release(); 233 m_current = node.release();
234 return m_current.get(); 234 return m_current.get();
235 } 235 }
236 } 236 }
237 if (node == root()) 237 if (node == root())
238 return 0; 238 return 0;
239 ContainerNode* parent = node->parentNode(); 239 ContainerNode* parent = node->parentNode();
240 if (!parent) 240 if (!parent)
241 return 0; 241 return 0;
242 node = parent; 242 node = parent;
243 short acceptNodeResult = acceptNode(node.get(), exceptionState); 243 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
244 if (exceptionState.hadException()) 244 if (exceptionState.hadException())
245 return 0; 245 return 0;
246 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 246 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
247 return setCurrent(node.release()); 247 return setCurrent(node.release());
248 } 248 }
249 return 0; 249 return 0;
250 } 250 }
251 251
252 Node* TreeWalker::nextNode(ExceptionState& exceptionState) 252 Node* TreeWalker::nextNode(ExceptionState& exceptionState)
253 { 253 {
254 RefPtrWillBeRawPtr<Node> node = m_current; 254 RefPtrWillBeRawPtr<Node> node = m_current;
255 Children: 255 Children:
256 while (Node* firstChild = node->firstChild()) { 256 while (Node* firstChild = node->firstChild()) {
257 node = firstChild; 257 node = firstChild;
258 short acceptNodeResult = acceptNode(node.get(), exceptionState); 258 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
259 if (exceptionState.hadException()) 259 if (exceptionState.hadException())
260 return 0; 260 return 0;
261 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 261 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
262 return setCurrent(node.release()); 262 return setCurrent(node.release());
263 if (acceptNodeResult == NodeFilter::FILTER_REJECT) 263 if (acceptNodeResult == NodeFilter::FILTER_REJECT)
264 break; 264 break;
265 } 265 }
266 while (Node* nextSibling = NodeTraversal::nextSkippingChildren(*node, root() )) { 266 while (Node* nextSibling = NodeTraversal::nextSkippingChildren(*node, root() )) {
267 node = nextSibling; 267 node = nextSibling;
268 short acceptNodeResult = acceptNode(node.get(), exceptionState); 268 unsigned acceptNodeResult = acceptNode(node.get(), exceptionState);
269 if (exceptionState.hadException()) 269 if (exceptionState.hadException())
270 return 0; 270 return 0;
271 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) 271 if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
272 return setCurrent(node.release()); 272 return setCurrent(node.release());
273 if (acceptNodeResult == NodeFilter::FILTER_SKIP) 273 if (acceptNodeResult == NodeFilter::FILTER_SKIP)
274 goto Children; 274 goto Children;
275 } 275 }
276 return 0; 276 return 0;
277 } 277 }
278 278
279 DEFINE_TRACE(TreeWalker) 279 DEFINE_TRACE(TreeWalker)
280 { 280 {
281 visitor->trace(m_current); 281 visitor->trace(m_current);
282 NodeIteratorBase::trace(visitor); 282 NodeIteratorBase::trace(visitor);
283 } 283 }
284 284
285 } // namespace blink 285 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/dom/NodeIteratorBase.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698