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

Side by Side Diff: third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp

Issue 2089063005: Schedule sibling invalidation sets for sibling insert/remove. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed minDirectAdjacent optimization. Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Neither the name of Google Inc. nor the names of its 10 * * Neither the name of Google Inc. nor the names of its
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 recalcChildStyle(change); 143 recalcChildStyle(change);
144 clearChildNeedsStyleRecalc(); 144 clearChildNeedsStyleRecalc();
145 } 145 }
146 146
147 void ShadowRoot::attach(const AttachContext& context) 147 void ShadowRoot::attach(const AttachContext& context)
148 { 148 {
149 StyleSharingDepthScope sharingScope(*this); 149 StyleSharingDepthScope sharingScope(*this);
150 DocumentFragment::attach(context); 150 DocumentFragment::attach(context);
151 } 151 }
152 152
153 void ShadowRoot::detach(const AttachContext& context)
154 {
155 if (context.clearInvalidation)
156 document().styleEngine().styleInvalidator().clearInvalidation(*this);
157 DocumentFragment::detach(context);
158 }
159
153 Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* inser tionPoint) 160 Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* inser tionPoint)
154 { 161 {
155 DocumentFragment::insertedInto(insertionPoint); 162 DocumentFragment::insertedInto(insertionPoint);
156 163
157 if (!insertionPoint->inShadowIncludingDocument() || !isOldest()) 164 if (!insertionPoint->inShadowIncludingDocument() || !isOldest())
158 return InsertionDone; 165 return InsertionDone;
159 166
160 // FIXME: When parsing <video controls>, insertedInto() is called many times without invoking removedFrom. 167 // FIXME: When parsing <video controls>, insertedInto() is called many times without invoking removedFrom.
161 // For now, we check m_registeredWithParentShadowroot. We would like to DCHE CK(!m_registeredShadowRoot) here. 168 // For now, we check m_registeredWithParentShadowroot. We would like to DCHE CK(!m_registeredShadowRoot) here.
162 // https://bugs.webkit.org/show_bug.cig?id=101316 169 // https://bugs.webkit.org/show_bug.cig?id=101316
(...skipping 13 matching lines...) Expand all
176 if (insertionPoint->inShadowIncludingDocument()) { 183 if (insertionPoint->inShadowIncludingDocument()) {
177 document().styleEngine().shadowRootRemovedFromDocument(this); 184 document().styleEngine().shadowRootRemovedFromDocument(this);
178 if (m_registeredWithParentShadowRoot) { 185 if (m_registeredWithParentShadowRoot) {
179 ShadowRoot* root = host().containingShadowRoot(); 186 ShadowRoot* root = host().containingShadowRoot();
180 if (!root) 187 if (!root)
181 root = insertionPoint->containingShadowRoot(); 188 root = insertionPoint->containingShadowRoot();
182 if (root) 189 if (root)
183 root->removeChildShadowRoot(); 190 root->removeChildShadowRoot();
184 m_registeredWithParentShadowRoot = false; 191 m_registeredWithParentShadowRoot = false;
185 } 192 }
193 if (needsStyleInvalidation())
194 document().styleEngine().styleInvalidator().clearInvalidation(*this) ;
186 } 195 }
187 196
188 DocumentFragment::removedFrom(insertionPoint); 197 DocumentFragment::removedFrom(insertionPoint);
189 } 198 }
190 199
191 void ShadowRoot::childrenChanged(const ChildrenChange& change) 200 void ShadowRoot::childrenChanged(const ChildrenChange& change)
192 { 201 {
193 ContainerNode::childrenChanged(change); 202 ContainerNode::childrenChanged(change);
194 203
195 if (change.isChildElementChange()) 204 if (change.isChildElementChange())
196 checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingEleme ntRemoved : SiblingElementInserted, change.siblingBeforeChange, change.siblingAf terChange); 205 checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingEleme ntRemoved : SiblingElementInserted, change.siblingChanged, change.siblingBeforeC hange, change.siblingAfterChange);
197 206
198 if (InsertionPoint* point = shadowInsertionPointOfYoungerShadowRoot()) { 207 if (InsertionPoint* point = shadowInsertionPointOfYoungerShadowRoot()) {
199 if (ShadowRoot* root = point->containingShadowRoot()) 208 if (ShadowRoot* root = point->containingShadowRoot())
200 root->owner()->setNeedsDistributionRecalc(); 209 root->owner()->setNeedsDistributionRecalc();
201 } 210 }
202 } 211 }
203 212
204 void ShadowRoot::registerScopedHTMLStyleChild() 213 void ShadowRoot::registerScopedHTMLStyleChild()
205 { 214 {
206 ++m_numberOfStyles; 215 ++m_numberOfStyles;
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 ostream << "ShadowRootType::Open"; 335 ostream << "ShadowRootType::Open";
327 break; 336 break;
328 case ShadowRootType::Closed: 337 case ShadowRootType::Closed:
329 ostream << "ShadowRootType::Closed"; 338 ostream << "ShadowRootType::Closed";
330 break; 339 break;
331 } 340 }
332 return ostream; 341 return ostream;
333 } 342 }
334 343
335 } // namespace blink 344 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698