| Index: third_party/WebKit/Source/core/dom/StyleEngine.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/dom/StyleEngine.cpp b/third_party/WebKit/Source/core/dom/StyleEngine.cpp
 | 
| index cc21a6a6f028ca5314bc6d271708ba791caab474..16804d7714d8bc1964c6068dafab22aa1565a9a7 100644
 | 
| --- a/third_party/WebKit/Source/core/dom/StyleEngine.cpp
 | 
| +++ b/third_party/WebKit/Source/core/dom/StyleEngine.cpp
 | 
| @@ -33,6 +33,7 @@
 | 
|  #include "core/css/CSSStyleSheet.h"
 | 
|  #include "core/css/FontFaceCache.h"
 | 
|  #include "core/css/StyleSheetContents.h"
 | 
| +#include "core/css/invalidation/InvalidationSet.h"
 | 
|  #include "core/css/resolver/ScopedStyleResolver.h"
 | 
|  #include "core/dom/DocumentStyleSheetCollector.h"
 | 
|  #include "core/dom/Element.h"
 | 
| @@ -631,18 +632,17 @@ void StyleEngine::platformColorsChanged()
 | 
|  void StyleEngine::classChangedForElement(const SpaceSplitString& changedClasses, Element& element)
 | 
|  {
 | 
|      ASSERT(isMaster());
 | 
| -    InvalidationSetVector invalidationSets;
 | 
| +    InvalidationLists invalidationLists;
 | 
|      unsigned changedSize = changedClasses.size();
 | 
|      RuleFeatureSet& ruleFeatureSet = ensureResolver().ensureUpdatedRuleFeatureSet();
 | 
|      for (unsigned i = 0; i < changedSize; ++i)
 | 
| -        ruleFeatureSet.collectInvalidationSetsForClass(invalidationSets, element, changedClasses[i]);
 | 
| -    scheduleInvalidationSetsForElement(invalidationSets, element);
 | 
| +        ruleFeatureSet.collectInvalidationSetsForClass(invalidationLists, element, changedClasses[i]);
 | 
| +    m_styleInvalidator.scheduleInvalidationSetsForElement(invalidationLists, element);
 | 
|  }
 | 
|  
 | 
|  void StyleEngine::classChangedForElement(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, Element& element)
 | 
|  {
 | 
|      ASSERT(isMaster());
 | 
| -    InvalidationSetVector invalidationSets;
 | 
|      if (!oldClasses.size()) {
 | 
|          classChangedForElement(newClasses, element);
 | 
|          return;
 | 
| @@ -652,6 +652,7 @@ void StyleEngine::classChangedForElement(const SpaceSplitString& oldClasses, con
 | 
|      BitVector remainingClassBits;
 | 
|      remainingClassBits.ensureSize(oldClasses.size());
 | 
|  
 | 
| +    InvalidationLists invalidationLists;
 | 
|      RuleFeatureSet& ruleFeatureSet = ensureResolver().ensureUpdatedRuleFeatureSet();
 | 
|  
 | 
|      for (unsigned i = 0; i < newClasses.size(); ++i) {
 | 
| @@ -667,51 +668,45 @@ void StyleEngine::classChangedForElement(const SpaceSplitString& oldClasses, con
 | 
|          }
 | 
|          // Class was added.
 | 
|          if (!found)
 | 
| -            ruleFeatureSet.collectInvalidationSetsForClass(invalidationSets, element, newClasses[i]);
 | 
| +            ruleFeatureSet.collectInvalidationSetsForClass(invalidationLists, element, newClasses[i]);
 | 
|      }
 | 
|  
 | 
|      for (unsigned i = 0; i < oldClasses.size(); ++i) {
 | 
|          if (remainingClassBits.quickGet(i))
 | 
|              continue;
 | 
|          // Class was removed.
 | 
| -        ruleFeatureSet.collectInvalidationSetsForClass(invalidationSets, element, oldClasses[i]);
 | 
| +        ruleFeatureSet.collectInvalidationSetsForClass(invalidationLists, element, oldClasses[i]);
 | 
|      }
 | 
|  
 | 
| -    scheduleInvalidationSetsForElement(invalidationSets, element);
 | 
| +    m_styleInvalidator.scheduleInvalidationSetsForElement(invalidationLists, element);
 | 
|  }
 | 
|  
 | 
|  void StyleEngine::attributeChangedForElement(const QualifiedName& attributeName, Element& element)
 | 
|  {
 | 
|      ASSERT(isMaster());
 | 
| -    InvalidationSetVector invalidationSets;
 | 
| -    ensureResolver().ensureUpdatedRuleFeatureSet().collectInvalidationSetsForAttribute(invalidationSets, element, attributeName);
 | 
| -    scheduleInvalidationSetsForElement(invalidationSets, element);
 | 
| +    InvalidationLists invalidationLists;
 | 
| +    ensureResolver().ensureUpdatedRuleFeatureSet().collectInvalidationSetsForAttribute(invalidationLists, element, attributeName);
 | 
| +    m_styleInvalidator.scheduleInvalidationSetsForElement(invalidationLists, element);
 | 
|  }
 | 
|  
 | 
|  void StyleEngine::idChangedForElement(const AtomicString& oldId, const AtomicString& newId, Element& element)
 | 
|  {
 | 
|      ASSERT(isMaster());
 | 
| -    InvalidationSetVector invalidationSets;
 | 
| +    InvalidationLists invalidationLists;
 | 
|      RuleFeatureSet& ruleFeatureSet = ensureResolver().ensureUpdatedRuleFeatureSet();
 | 
|      if (!oldId.isEmpty())
 | 
| -        ruleFeatureSet.collectInvalidationSetsForId(invalidationSets, element, oldId);
 | 
| +        ruleFeatureSet.collectInvalidationSetsForId(invalidationLists, element, oldId);
 | 
|      if (!newId.isEmpty())
 | 
| -        ruleFeatureSet.collectInvalidationSetsForId(invalidationSets, element, newId);
 | 
| -    scheduleInvalidationSetsForElement(invalidationSets, element);
 | 
| +        ruleFeatureSet.collectInvalidationSetsForId(invalidationLists, element, newId);
 | 
| +    m_styleInvalidator.scheduleInvalidationSetsForElement(invalidationLists, element);
 | 
|  }
 | 
|  
 | 
|  void StyleEngine::pseudoStateChangedForElement(CSSSelector::PseudoType pseudoType, Element& element)
 | 
|  {
 | 
|      ASSERT(isMaster());
 | 
| -    InvalidationSetVector invalidationSets;
 | 
| -    ensureResolver().ensureUpdatedRuleFeatureSet().collectInvalidationSetsForPseudoClass(invalidationSets, element, pseudoType);
 | 
| -    scheduleInvalidationSetsForElement(invalidationSets, element);
 | 
| -}
 | 
| -
 | 
| -void StyleEngine::scheduleInvalidationSetsForElement(const InvalidationSetVector& invalidationSets, Element& element)
 | 
| -{
 | 
| -    for (auto invalidationSet : invalidationSets)
 | 
| -        m_styleInvalidator.scheduleInvalidation(invalidationSet, element);
 | 
| +    InvalidationLists invalidationLists;
 | 
| +    ensureResolver().ensureUpdatedRuleFeatureSet().collectInvalidationSetsForPseudoClass(invalidationLists, element, pseudoType);
 | 
| +    m_styleInvalidator.scheduleInvalidationSetsForElement(invalidationLists, element);
 | 
|  }
 | 
|  
 | 
|  DEFINE_TRACE(StyleEngine)
 | 
| 
 |