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

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

Issue 395633007: Call ContainerNode::checkForSiblingStyleChanges() for Element insertion / removal only (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix typo 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 | « no previous file | Source/core/dom/ContainerNode.cpp » ('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, 2009, 2010, 2011, 2013 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2013 Apple Inc. All r ights 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 138
139 bool childrenAffectedByForwardPositionalRules() const { return hasRestyleFla g(ChildrenAffectedByForwardPositionalRules); } 139 bool childrenAffectedByForwardPositionalRules() const { return hasRestyleFla g(ChildrenAffectedByForwardPositionalRules); }
140 void setChildrenAffectedByForwardPositionalRules() { setRestyleFlag(Children AffectedByForwardPositionalRules); } 140 void setChildrenAffectedByForwardPositionalRules() { setRestyleFlag(Children AffectedByForwardPositionalRules); }
141 141
142 bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFl ag(ChildrenAffectedByBackwardPositionalRules); } 142 bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFl ag(ChildrenAffectedByBackwardPositionalRules); }
143 void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(Childre nAffectedByBackwardPositionalRules); } 143 void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(Childre nAffectedByBackwardPositionalRules); }
144 144
145 // FIXME: These methods should all be renamed to something better than "chec k", 145 // FIXME: These methods should all be renamed to something better than "chec k",
146 // since it's not clear that they alter the style bits of siblings and child ren. 146 // since it's not clear that they alter the style bits of siblings and child ren.
147 void checkForChildrenAdjacentRuleChanges(); 147 void checkForChildrenAdjacentRuleChanges();
148 enum SiblingCheckType { FinishedParsingChildren, SiblingRemoved, Other }; 148 enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, Sib lingElementRemoved };
149 void checkForSiblingStyleChanges(SiblingCheckType, Node* nodeBeforeChange, N ode* nodeAfterChange); 149 void checkForSiblingStyleChanges(SiblingCheckType, Node* nodeBeforeChange, N ode* nodeAfterChange);
150 150
151 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); } 151 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); }
152 152
153 // ------------------------------------------------------------------------- ---- 153 // ------------------------------------------------------------------------- ----
154 // Notification of document structure changes (see core/dom/Node.h for more notification methods) 154 // Notification of document structure changes (see core/dom/Node.h for more notification methods)
155 155
156 enum ChildrenChangeType { ChildInserted, ChildRemoved, AllChildrenRemoved, T extChanged }; 156 enum ChildrenChangeType { ElementInserted, NonElementInserted, ElementRemove d, NonElementRemoved, AllChildrenRemoved, TextChanged };
157 enum ChildrenChangeSource { ChildrenChangeSourceAPI, ChildrenChangeSourcePar ser }; 157 enum ChildrenChangeSource { ChildrenChangeSourceAPI, ChildrenChangeSourcePar ser };
158 struct ChildrenChange { 158 struct ChildrenChange {
159 STACK_ALLOCATED(); 159 STACK_ALLOCATED();
160 public: 160 public:
161 static ChildrenChange forInsertion(Node& node, ChildrenChangeSource byPa rser)
162 {
163 ChildrenChange change = {
164 node.isElementNode() ? ElementInserted : NonElementInserted,
165 node.previousSibling(),
166 node.nextSibling(),
167 byParser
168 };
169 return change;
170 }
171
172 static ChildrenChange forRemoval(Node& node, Node* previousSibling, Node * nextSibling, ChildrenChangeSource byParser)
173 {
174 ChildrenChange change = {
175 node.isElementNode() ? ElementRemoved : NonElementRemoved,
176 previousSibling,
177 nextSibling,
178 byParser
179 };
180 return change;
181 }
182
183 bool isChildInsertion() const { return type == ElementInserted || type = = NonElementInserted; }
184 bool isChildRemoval() const { return type == ElementRemoved || type == N onElementRemoved; }
185 bool isElementChange() const { return type == ElementInserted || type == ElementRemoved; }
esprehn 2014/07/28 22:02:30 I don't think this is correct, if everything was r
Inactive 2014/07/28 22:23:28 You are right that in case all children were remov
186
161 ChildrenChangeType type; 187 ChildrenChangeType type;
162 RawPtrWillBeMember<Node> siblingBeforeChange; 188 RawPtrWillBeMember<Node> siblingBeforeChange;
163 RawPtrWillBeMember<Node> siblingAfterChange; 189 RawPtrWillBeMember<Node> siblingAfterChange;
164 ChildrenChangeSource byParser; 190 ChildrenChangeSource byParser;
165 }; 191 };
166 192
167 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child 193 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child
168 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value. 194 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value.
169 virtual void childrenChanged(const ChildrenChange&); 195 virtual void childrenChanged(const ChildrenChange&);
170 196
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 inline void getChildNodes(Node& node, NodeVector& nodes) 345 inline void getChildNodes(Node& node, NodeVector& nodes)
320 { 346 {
321 ASSERT(!nodes.size()); 347 ASSERT(!nodes.size());
322 for (Node* child = node.firstChild(); child; child = child->nextSibling()) 348 for (Node* child = node.firstChild(); child; child = child->nextSibling())
323 nodes.append(child); 349 nodes.append(child);
324 } 350 }
325 351
326 } // namespace WebCore 352 } // namespace WebCore
327 353
328 #endif // ContainerNode_h 354 #endif // ContainerNode_h
OLDNEW
« no previous file with comments | « no previous file | Source/core/dom/ContainerNode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698