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

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

Issue 642973003: Introduce typed Node/Element iterators for range-based for loops of C++11. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rename `from` to `fromNext`. Make some parameters const references. Created 6 years, 2 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
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 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
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 1650 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 break; 1661 break;
1662 default: 1662 default:
1663 break; 1663 break;
1664 } 1664 }
1665 } 1665 }
1666 fprintf(stderr, "\n"); 1666 fprintf(stderr, "\n");
1667 } 1667 }
1668 1668
1669 static void traverseTreeAndMark(const String& baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, cons t char* markedLabel2) 1669 static void traverseTreeAndMark(const String& baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, cons t char* markedLabel2)
1670 { 1670 {
1671 for (const Node* node = rootNode; node; node = NodeTraversal::next(*node, ro otNode)) { 1671 for (Node& node : NodeTraversal::inclusiveDescendantsOf(*rootNode)) {
1672 if (node == markedNode1) 1672 if (node == markedNode1)
1673 fprintf(stderr, "%s", markedLabel1); 1673 fprintf(stderr, "%s", markedLabel1);
1674 if (node == markedNode2) 1674 if (node == markedNode2)
1675 fprintf(stderr, "%s", markedLabel2); 1675 fprintf(stderr, "%s", markedLabel2);
1676 1676
1677 StringBuilder indent; 1677 StringBuilder indent;
1678 indent.append(baseIndent); 1678 indent.append(baseIndent);
1679 for (const Node* tmpNode = node; tmpNode && tmpNode != rootNode; tmpNode = tmpNode->parentOrShadowHostNode()) 1679 for (const Node* tmpNode = &node; tmpNode && tmpNode != rootNode; tmpNod e = tmpNode->parentOrShadowHostNode())
1680 indent.append('\t'); 1680 indent.append('\t');
1681 fprintf(stderr, "%s", indent.toString().utf8().data()); 1681 fprintf(stderr, "%s", indent.toString().utf8().data());
1682 node->showNode(); 1682 node.showNode();
1683 indent.append('\t'); 1683 indent.append('\t');
1684 1684
1685 if (node->isElementNode()) { 1685 if (node.isElementNode()) {
1686 const Element* element = toElement(node); 1686 const Element& element = toElement(node);
1687 if (Element* pseudo = element->pseudoElement(BEFORE)) 1687 if (Element* pseudo = element.pseudoElement(BEFORE))
1688 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2); 1688 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2);
1689 if (Element* pseudo = element->pseudoElement(AFTER)) 1689 if (Element* pseudo = element.pseudoElement(AFTER))
1690 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2); 1690 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2);
1691 if (Element* pseudo = element->pseudoElement(BACKDROP)) 1691 if (Element* pseudo = element.pseudoElement(BACKDROP))
1692 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2); 1692 traverseTreeAndMark(indent.toString(), pseudo, markedNode1, mark edLabel1, markedNode2, markedLabel2);
1693 } 1693 }
1694 1694
1695 if (node->isShadowRoot()) { 1695 if (node.isShadowRoot()) {
1696 if (ShadowRoot* youngerShadowRoot = toShadowRoot(node)->youngerShado wRoot()) 1696 if (ShadowRoot* youngerShadowRoot = toShadowRoot(node).youngerShadow Root())
1697 traverseTreeAndMark(indent.toString(), youngerShadowRoot, marked Node1, markedLabel1, markedNode2, markedLabel2); 1697 traverseTreeAndMark(indent.toString(), youngerShadowRoot, marked Node1, markedLabel1, markedNode2, markedLabel2);
1698 } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node)) 1698 } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(&node))
1699 traverseTreeAndMark(indent.toString(), oldestShadowRoot, markedNode1 , markedLabel1, markedNode2, markedLabel2); 1699 traverseTreeAndMark(indent.toString(), oldestShadowRoot, markedNode1 , markedLabel1, markedNode2, markedLabel2);
1700 } 1700 }
1701 } 1701 }
1702 1702
1703 void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, co nst Node* markedNode2, const char* markedLabel2) const 1703 void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, co nst Node* markedNode2, const char* markedLabel2) const
1704 { 1704 {
1705 const Node* rootNode; 1705 const Node* rootNode;
1706 const Node* node = this; 1706 const Node* node = this;
1707 while (node->parentOrShadowHostNode() && !isHTMLBodyElement(*node)) 1707 while (node->parentOrShadowHostNode() && !isHTMLBodyElement(*node))
1708 node = node->parentOrShadowHostNode(); 1708 node = node->parentOrShadowHostNode();
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
2463 node->showTreeForThis(); 2463 node->showTreeForThis();
2464 } 2464 }
2465 2465
2466 void showNodePath(const blink::Node* node) 2466 void showNodePath(const blink::Node* node)
2467 { 2467 {
2468 if (node) 2468 if (node)
2469 node->showNodePathForThis(); 2469 node->showNodePathForThis();
2470 } 2470 }
2471 2471
2472 #endif 2472 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698