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

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

Issue 16951003: Fix broken AttachContext from r152289 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed failing test (/fast/forms/file/input-file-re-render.html) 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.
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE; 120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE;
121 virtual void setHovered(bool = true) OVERRIDE; 121 virtual void setHovered(bool = true) OVERRIDE;
122 122
123 // ------------------------------------------------------------------------- ---- 123 // ------------------------------------------------------------------------- ----
124 // Notification of document structure changes (see core/dom/Node.h for more notification methods) 124 // Notification of document structure changes (see core/dom/Node.h for more notification methods)
125 125
126 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child 126 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child
127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value. 127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value.
128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang e = 0, Node* afterChange = 0, int childCountDelta = 0); 128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang e = 0, Node* afterChange = 0, int childCountDelta = 0);
129 129
130 void attachChildren(); 130 void attachChildren(const AttachContext& = AttachContext());
131 void attachChildrenLazily(); 131 void attachChildrenLazily();
132 void detachChildren(); 132 void detachChildren(const AttachContext& = AttachContext());
133 void detachChildrenIfNeeded(); 133 void detachChildrenIfNeeded(const AttachContext& = AttachContext());
134 134
135 void disconnectDescendantFrames(); 135 void disconnectDescendantFrames();
136 136
137 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; } 137 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; }
138 138
139 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE; 139 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE;
140 140
141 protected: 141 protected:
142 ContainerNode(TreeScope*, ConstructionType = CreateContainer); 142 ContainerNode(TreeScope*, ConstructionType = CreateContainer);
143 143
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 // This will catch anyone doing an unnecessary cast. 189 // This will catch anyone doing an unnecessary cast.
190 void toContainerNode(const ContainerNode*); 190 void toContainerNode(const ContainerNode*);
191 191
192 inline ContainerNode::ContainerNode(TreeScope* treeScope, ConstructionType type) 192 inline ContainerNode::ContainerNode(TreeScope* treeScope, ConstructionType type)
193 : Node(treeScope, type) 193 : Node(treeScope, type)
194 , m_firstChild(0) 194 , m_firstChild(0)
195 , m_lastChild(0) 195 , m_lastChild(0)
196 { 196 {
197 } 197 }
198 198
199 inline void ContainerNode::attachChildren() 199 inline void ContainerNode::attachChildren(const AttachContext& context)
200 { 200 {
201 AttachContext childrenContext(context);
202 childrenContext.resolvedStyle = 0;
203
201 for (Node* child = firstChild(); child; child = child->nextSibling()) { 204 for (Node* child = firstChild(); child; child = child->nextSibling()) {
202 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his)); 205 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his));
203 if (!child->attached()) 206 if (!child->attached())
204 child->attach(); 207 child->attach(childrenContext);
205 } 208 }
206 } 209 }
207 210
208 inline void ContainerNode::attachChildrenLazily() 211 inline void ContainerNode::attachChildrenLazily()
209 { 212 {
210 for (Node* child = firstChild(); child; child = child->nextSibling()) 213 for (Node* child = firstChild(); child; child = child->nextSibling())
211 if (!child->attached()) 214 if (!child->attached())
212 child->lazyAttach(); 215 child->lazyAttach();
213 } 216 }
214 217
215 inline void ContainerNode::detachChildrenIfNeeded() 218 inline void ContainerNode::detachChildrenIfNeeded(const AttachContext& context)
216 { 219 {
220 AttachContext childrenContext(context);
221 childrenContext.resolvedStyle = 0;
222
217 for (Node* child = firstChild(); child; child = child->nextSibling()) { 223 for (Node* child = firstChild(); child; child = child->nextSibling()) {
218 if (child->attached()) 224 if (child->attached())
219 child->detach(); 225 child->detach(childrenContext);
220 } 226 }
221 } 227 }
222 228
223 inline void ContainerNode::detachChildren() 229 inline void ContainerNode::detachChildren(const AttachContext& context)
224 { 230 {
231 AttachContext childrenContext(context);
232 childrenContext.resolvedStyle = 0;
233
225 for (Node* child = firstChild(); child; child = child->nextSibling()) 234 for (Node* child = firstChild(); child; child = child->nextSibling())
226 child->detach(); 235 child->detach(childrenContext);
227 } 236 }
228 237
229 inline unsigned Node::childNodeCount() const 238 inline unsigned Node::childNodeCount() const
230 { 239 {
231 if (!isContainerNode()) 240 if (!isContainerNode())
232 return 0; 241 return 0;
233 return toContainerNode(this)->childNodeCount(); 242 return toContainerNode(this)->childNodeCount();
234 } 243 }
235 244
236 inline Node* Node::childNode(unsigned index) const 245 inline Node* Node::childNode(unsigned index) const
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 m_node->resumePostAttachCallbacks(); 364 m_node->resumePostAttachCallbacks();
356 } 365 }
357 366
358 private: 367 private:
359 ContainerNode* m_node; 368 ContainerNode* m_node;
360 }; 369 };
361 370
362 } // namespace WebCore 371 } // namespace WebCore
363 372
364 #endif // ContainerNode_h 373 #endif // ContainerNode_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698