Index: third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp |
diff --git a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp |
index 1b204033c8bd1438d39c6d504460ad665338afa1..1f8e177be8841c4cb229f92dc91bb2caef731122 100644 |
--- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp |
+++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp |
@@ -126,6 +126,8 @@ void ShadowRoot::attach(const AttachContext& context) |
Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* insertionPoint) |
{ |
DocumentFragment::insertedInto(insertionPoint); |
+ if (isV1()) |
+ document().updateAssignment(); |
if (!insertionPoint->inShadowIncludingDocument() || !isOldest()) |
return InsertionDone; |
@@ -141,6 +143,7 @@ Node::InsertionNotificationRequest ShadowRoot::insertedInto(ContainerNode* inser |
m_registeredWithParentShadowRoot = true; |
} |
+ |
return InsertionDone; |
} |
@@ -169,8 +172,11 @@ void ShadowRoot::childrenChanged(const ChildrenChange& change) |
checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingElementRemoved : SiblingElementInserted, change.siblingBeforeChange, change.siblingAfterChange); |
if (InsertionPoint* point = shadowInsertionPointOfYoungerShadowRoot()) { |
- if (ShadowRoot* root = point->containingShadowRoot()) |
+ if (ShadowRoot* root = point->containingShadowRoot()) { |
root->owner()->setNeedsDistributionRecalc(); |
+ if (document().shadowCascadeOrder() == ShadowCascadeOrder::ShadowCascadeV1) |
+ document().updateAssignment(); |
+ } |
} |
} |
@@ -334,13 +340,20 @@ const HeapVector<Member<HTMLSlotElement>>& ShadowRoot::descendantSlots() |
return m_shadowRootRareData->descendantSlots(); |
} |
-void ShadowRoot::distributeV1() |
+void ShadowRoot::assignV1() |
{ |
if (!m_slotAssignment) |
m_slotAssignment = SlotAssignment::create(); |
m_slotAssignment->resolveAssignment(*this); |
} |
+void ShadowRoot::distributeV1() |
+{ |
+ if (!m_slotAssignment) |
+ m_slotAssignment = SlotAssignment::create(); |
+ m_slotAssignment->resolveDistribution(*this); |
+} |
+ |
DEFINE_TRACE(ShadowRoot) |
{ |
visitor->trace(m_prev); |