Index: third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp |
diff --git a/third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp b/third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp |
index 5a57a75ceb356a93ecb2875899136dc3935f0c48..7c48d6902da741d84f633bea4406dfd1ad86f557 100644 |
--- a/third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp |
+++ b/third_party/WebKit/Source/core/css/invalidation/StyleInvalidator.cpp |
@@ -132,6 +132,25 @@ void StyleInvalidator::scheduleSiblingInvalidationsAsDescendants( |
} |
} |
+void StyleInvalidator::rescheduleSiblingInvalidationsAsDescendants( |
+ Element& element) { |
+ DCHECK(element.parentNode()); |
+ PendingInvalidations* pendingInvalidations = |
+ m_pendingInvalidationMap.get(&element); |
+ if (!pendingInvalidations || pendingInvalidations->siblings().isEmpty()) |
+ return; |
+ |
+ InvalidationLists invalidationLists; |
+ for (const auto& invalidationSet : pendingInvalidations->siblings()) { |
+ invalidationLists.descendants.push_back(invalidationSet); |
+ if (DescendantInvalidationSet* descendants = |
+ toSiblingInvalidationSet(*invalidationSet).siblingDescendants()) { |
+ invalidationLists.descendants.push_back(descendants); |
+ } |
+ } |
+ scheduleInvalidationSetsForNode(invalidationLists, *element.parentNode()); |
+} |
+ |
void StyleInvalidator::clearInvalidation(ContainerNode& node) { |
if (!node.needsStyleInvalidation()) |
return; |