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

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

Issue 1899653002: Support slotchange event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 12 matching lines...) Expand all
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #include "core/dom/shadow/ElementShadow.h" 27 #include "core/dom/shadow/ElementShadow.h"
28 28
29 #include "core/css/StyleSheetList.h" 29 #include "core/css/StyleSheetList.h"
30 #include "core/dom/ElementTraversal.h" 30 #include "core/dom/ElementTraversal.h"
31 #include "core/dom/NodeTraversal.h" 31 #include "core/dom/NodeTraversal.h"
32 #include "core/dom/StyleChangeReason.h" 32 #include "core/dom/StyleChangeReason.h"
33 #include "core/dom/StyleEngine.h"
33 #include "core/dom/shadow/DistributedNodes.h" 34 #include "core/dom/shadow/DistributedNodes.h"
34 #include "core/frame/Deprecation.h" 35 #include "core/frame/Deprecation.h"
35 #include "core/html/HTMLContentElement.h" 36 #include "core/html/HTMLContentElement.h"
36 #include "core/html/HTMLShadowElement.h" 37 #include "core/html/HTMLShadowElement.h"
37 #include "core/inspector/InspectorInstrumentation.h" 38 #include "core/inspector/InspectorInstrumentation.h"
38 #include "platform/EventDispatchForbiddenScope.h" 39 #include "platform/EventDispatchForbiddenScope.h"
39 #include "platform/ScriptForbiddenScope.h" 40 #include "platform/ScriptForbiddenScope.h"
40 41
41 namespace blink { 42 namespace blink {
42 43
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 } 164 }
164 165
165 for (ShadowRoot* root = m_shadowRoots.head(); root; root = root->olderShadow Root()) 166 for (ShadowRoot* root = m_shadowRoots.head(); root; root = root->olderShadow Root())
166 root->lazyReattachIfAttached(); 167 root->lazyReattachIfAttached();
167 168
168 ShadowRoot* shadowRoot = ShadowRoot::create(shadowHost.document(), type); 169 ShadowRoot* shadowRoot = ShadowRoot::create(shadowHost.document(), type);
169 shadowRoot->setParentOrShadowHostNode(&shadowHost); 170 shadowRoot->setParentOrShadowHostNode(&shadowHost);
170 shadowRoot->setParentTreeScope(shadowHost.treeScope()); 171 shadowRoot->setParentTreeScope(shadowHost.treeScope());
171 m_shadowRoots.push(shadowRoot); 172 m_shadowRoots.push(shadowRoot);
172 setNeedsDistributionRecalc(); 173 setNeedsDistributionRecalc();
174 if (shadowHost.document().shadowCascadeOrder() == ShadowCascadeOrder::Shadow CascadeV1)
175 shadowHost.document().updateAssignment();
173 176
174 shadowRoot->insertedInto(&shadowHost); 177 shadowRoot->insertedInto(&shadowHost);
175 shadowHost.setChildNeedsStyleRecalc(); 178 shadowHost.setChildNeedsStyleRecalc();
176 shadowHost.setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTraci ng::create(StyleChangeReason::Shadow)); 179 shadowHost.setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTraci ng::create(StyleChangeReason::Shadow));
177 180
178 InspectorInstrumentation::didPushShadowRoot(&shadowHost, shadowRoot); 181 InspectorInstrumentation::didPushShadowRoot(&shadowHost, shadowRoot);
179 182
180 return *shadowRoot; 183 return *shadowRoot;
181 } 184 }
182 185
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } 344 }
342 345
343 void ElementShadow::willAffectSelector() 346 void ElementShadow::willAffectSelector()
344 { 347 {
345 for (ElementShadow* shadow = this; shadow; shadow = shadow->containingShadow ()) { 348 for (ElementShadow* shadow = this; shadow; shadow = shadow->containingShadow ()) {
346 if (shadow->needsSelectFeatureSet()) 349 if (shadow->needsSelectFeatureSet())
347 break; 350 break;
348 shadow->setNeedsSelectFeatureSet(); 351 shadow->setNeedsSelectFeatureSet();
349 } 352 }
350 setNeedsDistributionRecalc(); 353 setNeedsDistributionRecalc();
354 if (host()->document().shadowCascadeOrder() == ShadowCascadeOrder::ShadowCas cadeV1)
355 host()->document().updateAssignment();
351 } 356 }
352 357
353 void ElementShadow::clearDistribution() 358 void ElementShadow::clearDistribution()
354 { 359 {
355 m_nodeToInsertionPoints.clear(); 360 m_nodeToInsertionPoints.clear();
356 361
357 for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShado wRoot()) 362 for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShado wRoot())
358 root->setShadowInsertionPointOfYoungerShadowRoot(nullptr); 363 root->setShadowInsertionPointOfYoungerShadowRoot(nullptr);
359 } 364 }
360 365
361 DEFINE_TRACE(ElementShadow) 366 DEFINE_TRACE(ElementShadow)
362 { 367 {
363 visitor->trace(m_nodeToInsertionPoints); 368 visitor->trace(m_nodeToInsertionPoints);
364 visitor->trace(m_selectFeatures); 369 visitor->trace(m_selectFeatures);
365 // Shadow roots are linked with previous and next pointers which are traced. 370 // Shadow roots are linked with previous and next pointers which are traced.
366 // It is therefore enough to trace one of the shadow roots here and the 371 // It is therefore enough to trace one of the shadow roots here and the
367 // rest will be traced from there. 372 // rest will be traced from there.
368 visitor->trace(m_shadowRoots.head()); 373 visitor->trace(m_shadowRoots.head());
369 } 374 }
370 375
371 } // namespace blink 376 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698