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

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

Issue 2229503002: Style invalidation support for :first/last/only-child. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed review issue Created 4 years, 4 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, 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 ChildrenAffectedByFirstChildRules = 1 << 4, 47 ChildrenAffectedByFirstChildRules = 1 << 4,
48 ChildrenAffectedByLastChildRules = 1 << 5, 48 ChildrenAffectedByLastChildRules = 1 << 5,
49 ChildrenAffectedByDirectAdjacentRules = 1 << 6, 49 ChildrenAffectedByDirectAdjacentRules = 1 << 6,
50 ChildrenAffectedByIndirectAdjacentRules = 1 << 7, 50 ChildrenAffectedByIndirectAdjacentRules = 1 << 7,
51 ChildrenAffectedByForwardPositionalRules = 1 << 8, 51 ChildrenAffectedByForwardPositionalRules = 1 << 8,
52 ChildrenAffectedByBackwardPositionalRules = 1 << 9, 52 ChildrenAffectedByBackwardPositionalRules = 1 << 9,
53 AffectedByFirstChildRules = 1 << 10, 53 AffectedByFirstChildRules = 1 << 10,
54 AffectedByLastChildRules = 1 << 11, 54 AffectedByLastChildRules = 1 << 11,
55 55
56 NumberOfDynamicRestyleFlags = 12, 56 NumberOfDynamicRestyleFlags = 12,
57
58 ChildrenAffectedByStructuralRules = ChildrenAffectedByFirstChildRules
59 | ChildrenAffectedByLastChildRules
60 | ChildrenAffectedByDirectAdjacentRules
61 | ChildrenAffectedByIndirectAdjacentRules
62 | ChildrenAffectedByForwardPositionalRules
63 | ChildrenAffectedByBackwardPositionalRules
57 }; 64 };
58 65
59 enum SubtreeModificationAction { 66 enum SubtreeModificationAction {
60 DispatchSubtreeModifiedEvent, 67 DispatchSubtreeModifiedEvent,
61 OmitSubtreeModifiedEvent 68 OmitSubtreeModifiedEvent
62 }; 69 };
63 70
64 // This constant controls how much buffer is initially allocated 71 // This constant controls how much buffer is initially allocated
65 // for a Node Vector that is used to store child Nodes of a given Node. 72 // for a Node Vector that is used to store child Nodes of a given Node.
66 // FIXME: Optimize the value. 73 // FIXME: Optimize the value.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 void setAffectedByFirstChildRules() { setRestyleFlag(AffectedByFirstChildRul es); } 158 void setAffectedByFirstChildRules() { setRestyleFlag(AffectedByFirstChildRul es); }
152 159
153 bool affectedByLastChildRules() const { return hasRestyleFlag(AffectedByLast ChildRules); } 160 bool affectedByLastChildRules() const { return hasRestyleFlag(AffectedByLast ChildRules); }
154 void setAffectedByLastChildRules() { setRestyleFlag(AffectedByLastChildRules ); } 161 void setAffectedByLastChildRules() { setRestyleFlag(AffectedByLastChildRules ); }
155 162
156 bool needsAdjacentStyleRecalc() const; 163 bool needsAdjacentStyleRecalc() const;
157 164
158 // FIXME: These methods should all be renamed to something better than "chec k", 165 // FIXME: These methods should all be renamed to something better than "chec k",
159 // since it's not clear that they alter the style bits of siblings and child ren. 166 // since it's not clear that they alter the style bits of siblings and child ren.
160 enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, Sib lingElementRemoved }; 167 enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, Sib lingElementRemoved };
161 void checkForSiblingStyleChanges(SiblingCheckType, Node* changedNode, Node* nodeBeforeChange, Node* nodeAfterChange); 168 void checkForSiblingStyleChanges(SiblingCheckType, Element* changedElement, Node* nodeBeforeChange, Node* nodeAfterChange);
162 void recalcDescendantStyles(StyleRecalcChange); 169 void recalcDescendantStyles(StyleRecalcChange);
163 170
164 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); } 171 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); }
165 172
166 // ------------------------------------------------------------------------- ---- 173 // ------------------------------------------------------------------------- ----
167 // Notification of document structure changes (see core/dom/Node.h for more notification methods) 174 // Notification of document structure changes (see core/dom/Node.h for more notification methods)
168 175
169 enum ChildrenChangeType { ElementInserted, NonElementInserted, ElementRemove d, NonElementRemoved, AllChildrenRemoved, TextChanged }; 176 enum ChildrenChangeType { ElementInserted, NonElementInserted, ElementRemove d, NonElementRemoved, AllChildrenRemoved, TextChanged };
170 enum ChildrenChangeSource { ChildrenChangeSourceAPI, ChildrenChangeSourcePar ser }; 177 enum ChildrenChangeSource { ChildrenChangeSourceAPI, ChildrenChangeSourcePar ser };
171 struct ChildrenChange { 178 struct ChildrenChange {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 inline void getChildNodes(ContainerNode& node, NodeVector& nodes) 345 inline void getChildNodes(ContainerNode& node, NodeVector& nodes)
339 { 346 {
340 DCHECK(!nodes.size()); 347 DCHECK(!nodes.size());
341 for (Node* child = node.firstChild(); child; child = child->nextSibling()) 348 for (Node* child = node.firstChild(); child; child = child->nextSibling())
342 nodes.append(child); 349 nodes.append(child);
343 } 350 }
344 351
345 } // namespace blink 352 } // namespace blink
346 353
347 #endif // ContainerNode_h 354 #endif // ContainerNode_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/RuleFeature.cpp ('k') | third_party/WebKit/Source/core/dom/ContainerNode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698