| Index: Source/core/css/invalidation/StyleInvalidator.cpp
|
| diff --git a/Source/core/css/invalidation/StyleInvalidator.cpp b/Source/core/css/invalidation/StyleInvalidator.cpp
|
| index 517a78403201a0eaa2aec12b3f7efd0916fb8b23..f35d30bee26f77a0f33070c8827d67bf0049f1c8 100644
|
| --- a/Source/core/css/invalidation/StyleInvalidator.cpp
|
| +++ b/Source/core/css/invalidation/StyleInvalidator.cpp
|
| @@ -50,10 +50,11 @@ void StyleInvalidator::scheduleInvalidation(PassRefPtrWillBeRawPtr<InvalidationS
|
| clearInvalidation(element);
|
| return;
|
| }
|
| - if (invalidationSet->isEmpty()) {
|
| + if (invalidationSet->invalidatesSelf())
|
| element.setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::StyleInvalidator));
|
| +
|
| + if (invalidationSet->isEmpty())
|
| return;
|
| - }
|
|
|
| InvalidationList& list = ensurePendingInvalidationList(element);
|
| list.append(invalidationSet);
|
| @@ -128,6 +129,7 @@ ALWAYS_INLINE bool StyleInvalidator::checkInvalidationSetsAgainstElement(Element
|
| recursionData.setWholeSubtreeInvalid();
|
| return false;
|
| }
|
| + bool thisElementNeedsStyleRecalc = recursionData.matchesCurrentInvalidationSets(element);
|
| if (element.needsStyleInvalidation()) {
|
| if (InvalidationList* invalidationList = m_pendingInvalidationMap.get(&element)) {
|
| for (const auto& invalidationSet : *invalidationList)
|
| @@ -138,11 +140,9 @@ ALWAYS_INLINE bool StyleInvalidator::checkInvalidationSetsAgainstElement(Element
|
| TRACE_EVENT_SCOPE_THREAD,
|
| "data", InspectorStyleInvalidatorInvalidateEvent::invalidationList(element, *invalidationList));
|
| }
|
| - return true;
|
| }
|
| }
|
| -
|
| - return recursionData.matchesCurrentInvalidationSets(element);
|
| + return thisElementNeedsStyleRecalc;
|
| }
|
|
|
| bool StyleInvalidator::invalidateChildren(Element& element, StyleInvalidator::RecursionData& recursionData)
|
|
|