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

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

Issue 16379002: inline WebCore::Node::Node constructor more safely (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 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
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, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * 11 *
12 * This library is distributed in the hope that it will be useful, 12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details. 15 * Library General Public License for more details.
16 * 16 *
17 * You should have received a copy of the GNU Library General Public License 17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to 18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA. 20 * Boston, MA 02110-1301, USA.
21 * 21 *
22 */ 22 */
23 23
24 #ifndef ContainerNode_h 24 #ifndef ContainerNode_h
25 #define ContainerNode_h 25 #define ContainerNode_h
26 26
27 #include "core/dom/ExceptionCodePlaceholder.h" 27 #include "core/dom/ExceptionCodePlaceholder.h"
28 #include "core/dom/Node.h" 28 #include "core/dom/Node.h"
29 #include "core/dom/TreeScope.h"
adamk 2013/06/04 23:08:08 No need for an #include here
Mostyn Bramley-Moore 2013/06/04 23:46:07 Done.
29 30
30 #include <wtf/OwnPtr.h> 31 #include <wtf/OwnPtr.h>
31 #include <wtf/Vector.h> 32 #include <wtf/Vector.h>
32 33
33 namespace WebCore { 34 namespace WebCore {
34 35
35 class FloatPoint; 36 class FloatPoint;
36 class HTMLCollection; 37 class HTMLCollection;
37 38
38 typedef void (*NodeCallback)(Node*); 39 typedef void (*NodeCallback)(Node*);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 void detachChildren(); 132 void detachChildren();
132 void detachChildrenIfNeeded(); 133 void detachChildrenIfNeeded();
133 134
134 void disconnectDescendantFrames(); 135 void disconnectDescendantFrames();
135 136
136 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; } 137 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; }
137 138
138 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE; 139 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
139 140
140 protected: 141 protected:
141 ContainerNode(Document*, ConstructionType = CreateContainer); 142 ContainerNode(TreeScope*, ConstructionType = CreateContainer);
142 143
143 static void queuePostAttachCallback(NodeCallback, Node*); 144 static void queuePostAttachCallback(NodeCallback, Node*);
144 static bool postAttachCallbacksAreSuspended(); 145 static bool postAttachCallbacksAreSuspended();
145 146
146 template<class GenericNode, class GenericNodeContainer> 147 template<class GenericNode, class GenericNodeContainer>
147 friend void appendChildToContainer(GenericNode* child, GenericNodeContainer* ); 148 friend void appendChildToContainer(GenericNode* child, GenericNodeContainer* );
148 149
149 template<class GenericNode, class GenericNodeContainer> 150 template<class GenericNode, class GenericNodeContainer>
150 friend void Private::addChildNodesToDeletionQueue(GenericNode*& head, Generi cNode*& tail, GenericNodeContainer*); 151 friend void Private::addChildNodesToDeletionQueue(GenericNode*& head, Generi cNode*& tail, GenericNodeContainer*);
151 152
(...skipping 25 matching lines...) Expand all
177 178
178 inline const ContainerNode* toContainerNode(const Node* node) 179 inline const ContainerNode* toContainerNode(const Node* node)
179 { 180 {
180 ASSERT_WITH_SECURITY_IMPLICATION(!node || node->isContainerNode()); 181 ASSERT_WITH_SECURITY_IMPLICATION(!node || node->isContainerNode());
181 return static_cast<const ContainerNode*>(node); 182 return static_cast<const ContainerNode*>(node);
182 } 183 }
183 184
184 // This will catch anyone doing an unnecessary cast. 185 // This will catch anyone doing an unnecessary cast.
185 void toContainerNode(const ContainerNode*); 186 void toContainerNode(const ContainerNode*);
186 187
187 inline ContainerNode::ContainerNode(Document* document, ConstructionType type) 188 inline ContainerNode::ContainerNode(TreeScope* tree_scope, ConstructionType type )
adamk 2013/06/04 23:08:08 tree_scope -> treeScope
Mostyn Bramley-Moore 2013/06/04 23:46:07 Done.
188 : Node(document, type) 189 : Node(tree_scope, type)
189 , m_firstChild(0) 190 , m_firstChild(0)
190 , m_lastChild(0) 191 , m_lastChild(0)
191 { 192 {
192 } 193 }
193 194
194 inline void ContainerNode::attachChildren() 195 inline void ContainerNode::attachChildren()
195 { 196 {
196 for (Node* child = firstChild(); child; child = child->nextSibling()) { 197 for (Node* child = firstChild(); child; child = child->nextSibling()) {
197 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his)); 198 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his));
198 if (!child->attached()) 199 if (!child->attached())
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 m_node->resumePostAttachCallbacks(); 359 m_node->resumePostAttachCallbacks();
359 } 360 }
360 361
361 private: 362 private:
362 ContainerNode* m_node; 363 ContainerNode* m_node;
363 }; 364 };
364 365
365 } // namespace WebCore 366 } // namespace WebCore
366 367
367 #endif // ContainerNode_h 368 #endif // ContainerNode_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698