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

Unified Diff: Source/core/css/RuleFeature.cpp

Issue 217713002: Refactor StyleInvalidator to encapsulate all style invalidation state. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix clear(). Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/css/RuleFeature.cpp
diff --git a/Source/core/css/RuleFeature.cpp b/Source/core/css/RuleFeature.cpp
index f8ce8dd99902cd8455f5b19516311ed85ed56980..c0bc49277830ac79004306431b067c4d95c356eb 100644
--- a/Source/core/css/RuleFeature.cpp
+++ b/Source/core/css/RuleFeature.cpp
@@ -348,7 +348,7 @@ void RuleFeatureSet::clear()
m_metadata.clear();
m_classInvalidationSets.clear();
m_attributeInvalidationSets.clear();
- m_pendingInvalidationMap.clear();
+ m_styleInvalidator.clear();
}
void RuleFeatureSet::scheduleStyleInvalidationForClassChange(const SpaceSplitString& changedClasses, Element* element)
@@ -394,39 +394,19 @@ void RuleFeatureSet::scheduleStyleInvalidationForClassChange(const SpaceSplitStr
void RuleFeatureSet::scheduleStyleInvalidationForAttributeChange(const QualifiedName& attributeName, Element* element)
{
- if (RefPtr<DescendantInvalidationSet> invalidationSet = m_attributeInvalidationSets.get(attributeName.localName())) {
- ensurePendingInvalidationList(element).append(invalidationSet);
- element->setNeedsStyleInvalidation();
- }
+ if (RefPtr<DescendantInvalidationSet> invalidationSet = m_attributeInvalidationSets.get(attributeName.localName()))
+ m_styleInvalidator.scheduleInvalidation(invalidationSet, element);
}
void RuleFeatureSet::addClassToInvalidationSet(const AtomicString& className, Element* element)
{
- if (RefPtr<DescendantInvalidationSet> invalidationSet = m_classInvalidationSets.get(className)) {
- ensurePendingInvalidationList(element).append(invalidationSet);
- element->setNeedsStyleInvalidation();
- }
-}
-
-RuleFeatureSet::InvalidationList& RuleFeatureSet::ensurePendingInvalidationList(Element* element)
-{
- PendingInvalidationMap::AddResult addResult = m_pendingInvalidationMap.add(element, nullptr);
- if (addResult.isNewEntry)
- addResult.storedValue->value = adoptPtr(new InvalidationList);
- return *addResult.storedValue->value;
-}
-
-void RuleFeatureSet::clearStyleInvalidation(Node* node)
-{
- node->clearChildNeedsStyleInvalidation();
- node->clearNeedsStyleInvalidation();
- if (node->isElementNode())
- m_pendingInvalidationMap.remove(toElement(node));
+ if (RefPtr<DescendantInvalidationSet> invalidationSet = m_classInvalidationSets.get(className))
+ m_styleInvalidator.scheduleInvalidation(invalidationSet, element);
}
-RuleFeatureSet::PendingInvalidationMap& RuleFeatureSet::pendingInvalidationMap()
+StyleInvalidator& RuleFeatureSet::styleInvalidator()
{
- return m_pendingInvalidationMap;
+ return m_styleInvalidator;
}
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698