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

Side by Side Diff: Source/core/dom/ElementTraversal.h

Issue 406843002: Optimize hasTagName when called on an HTMLElement / SVGElement (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Element.h ('k') | Source/core/dom/Node.h » ('j') | 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 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Appl e Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Appl e Inc. All rights reserved.
6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
7 * Copyright (C) 2014 Samsung Electronics. All rights reserved. 7 * Copyright (C) 2014 Samsung Electronics. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 Node* node = current.lastChild(); 203 Node* node = current.lastChild();
204 while (node && !isElementOfType<const ElementType>(*node)) 204 while (node && !isElementOfType<const ElementType>(*node))
205 node = node->previousSibling(); 205 node = node->previousSibling();
206 return toElement<ElementType>(node); 206 return toElement<ElementType>(node);
207 } 207 }
208 208
209 template <class ElementType> 209 template <class ElementType>
210 template <class NodeType> 210 template <class NodeType>
211 inline ElementType* Traversal<ElementType>::firstWithinTemplate(NodeType& curren t) 211 inline ElementType* Traversal<ElementType>::firstWithinTemplate(NodeType& curren t)
212 { 212 {
213 Element* element = Traversal<Element>::firstWithin(current); 213 Node* node = current.firstChild();
214 while (element && !isElementOfType<const ElementType>(*element)) 214 while (node && !isElementOfType<const ElementType>(*node))
215 element = Traversal<Element>::next(*element, &current); 215 node = NodeTraversal::next(*node, &current);
216 return toElement<ElementType>(element); 216 return toElement<ElementType>(node);
217 } 217 }
218 218
219 template <class ElementType> 219 template <class ElementType>
220 template <class NodeType> 220 template <class NodeType>
221 inline ElementType* Traversal<ElementType>::lastWithinTemplate(NodeType& current ) 221 inline ElementType* Traversal<ElementType>::lastWithinTemplate(NodeType& current )
222 { 222 {
223 Element* element = Traversal<Element>::lastWithin(current); 223 Node* node = current.lastChild();
224 while (element && !isElementOfType<const ElementType>(*element)) 224 while (node && !isElementOfType<const ElementType>(*node))
225 element = Traversal<Element>::previous(element, &current); 225 node = NodeTraversal::previous(node, &current);
226 return toElement<ElementType>(element); 226 return toElement<ElementType>(node);
227 } 227 }
228 228
229 template <class ElementType> 229 template <class ElementType>
230 template <class NodeType> 230 template <class NodeType>
231 inline ElementType* Traversal<ElementType>::nextTemplate(NodeType& current) 231 inline ElementType* Traversal<ElementType>::nextTemplate(NodeType& current)
232 { 232 {
233 Element* element = Traversal<Element>::next(current); 233 Node* node = NodeTraversal::next(current);
234 while (element && !isElementOfType<const ElementType>(*element)) 234 while (node && !isElementOfType<const ElementType>(*node))
235 element = Traversal<Element>::next(*element); 235 node = NodeTraversal::next(*node);
236 return toElement<ElementType>(element); 236 return toElement<ElementType>(node);
237 } 237 }
238 238
239 template <class ElementType> 239 template <class ElementType>
240 template <class NodeType> 240 template <class NodeType>
241 inline ElementType* Traversal<ElementType>::nextTemplate(NodeType& current, cons t Node* stayWithin) 241 inline ElementType* Traversal<ElementType>::nextTemplate(NodeType& current, cons t Node* stayWithin)
242 { 242 {
243 Element* element = Traversal<Element>::next(current, stayWithin); 243 Node* node = NodeTraversal::next(current, stayWithin);
244 while (element && !isElementOfType<const ElementType>(*element)) 244 while (node && !isElementOfType<const ElementType>(*node))
245 element = Traversal<Element>::next(*element, stayWithin); 245 node = NodeTraversal::next(*node, stayWithin);
246 return toElement<ElementType>(element); 246 return toElement<ElementType>(node);
247 } 247 }
248 248
249 template <class ElementType> 249 template <class ElementType>
250 template <class NodeType> 250 template <class NodeType>
251 inline ElementType* Traversal<ElementType>::previousTemplate(NodeType& current) 251 inline ElementType* Traversal<ElementType>::previousTemplate(NodeType& current)
252 { 252 {
253 Element* element = Traversal<Element>::previous(current); 253 Node* node = NodeTraversal::previous(current);
254 while (element && !isElementOfType<const ElementType>(*element)) 254 while (node && !isElementOfType<const ElementType>(*node))
255 element = Traversal<Element>::previous(*element); 255 node = NodeTraversal::previous(*node);
256 return toElement<ElementType>(element); 256 return toElement<ElementType>(node);
257 } 257 }
258 258
259 template <class ElementType> 259 template <class ElementType>
260 template <class NodeType> 260 template <class NodeType>
261 inline ElementType* Traversal<ElementType>::previousTemplate(NodeType& current, const Node* stayWithin) 261 inline ElementType* Traversal<ElementType>::previousTemplate(NodeType& current, const Node* stayWithin)
262 { 262 {
263 Element* element = Traversal<Element>::previous(current, stayWithin); 263 Node* node = NodeTraversal::previous(current, stayWithin);
264 while (element && !isElementOfType<const ElementType>(*element)) 264 while (node && !isElementOfType<const ElementType>(*node))
265 element = Traversal<Element>::previous(*element, stayWithin); 265 node = NodeTraversal::previous(*node, stayWithin);
266 return toElement<ElementType>(element); 266 return toElement<ElementType>(node);
267 } 267 }
268 268
269 template <class ElementType> 269 template <class ElementType>
270 template <class NodeType> 270 template <class NodeType>
271 inline ElementType* Traversal<ElementType>::nextSkippingChildrenTemplate(NodeTyp e& current) 271 inline ElementType* Traversal<ElementType>::nextSkippingChildrenTemplate(NodeTyp e& current)
272 { 272 {
273 Node* node = NodeTraversal::nextSkippingChildren(current); 273 Node* node = NodeTraversal::nextSkippingChildren(current);
274 while (node && !isElementOfType<const ElementType>(*node)) 274 while (node && !isElementOfType<const ElementType>(*node))
275 node = NodeTraversal::nextSkippingChildren(*node); 275 node = NodeTraversal::nextSkippingChildren(*node);
276 return toElement<ElementType>(node); 276 return toElement<ElementType>(node);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 { 336 {
337 Node* node = current.nextSibling(); 337 Node* node = current.nextSibling();
338 while (node && !isElementOfType<const ElementType>(*node)) 338 while (node && !isElementOfType<const ElementType>(*node))
339 node = node->nextSibling(); 339 node = node->nextSibling();
340 return toElement<ElementType>(node); 340 return toElement<ElementType>(node);
341 } 341 }
342 342
343 } // namespace blink 343 } // namespace blink
344 344
345 #endif 345 #endif
OLDNEW
« no previous file with comments | « Source/core/dom/Element.h ('k') | Source/core/dom/Node.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698