void RuleFeatureSet::addClassToInvalidationSet(const AtomicString& className, Element* element) { if (DescendantInvalidationSet* invalidationSet = m_classInvalidationSets.get(className)) { ensurePendingInvalidationList(element).append(invalidationSet); element->setNeedsStyleInvalidation(); } }
void StyleInvalidator::scheduleInvalidation(PassRefPtrWillBeRawPtr<DescendantInvalidationSet> invalidationSet, Element& element) { ASSERT(element.inActiveDocument()); ASSERT(element.styleChangeType() < SubtreeStyleChange); InvalidationList& list = ensurePendingInvalidationList(element); // If we're already going to invalidate the whole subtree we don't need to store any new sets. if (!list.isEmpty() && list.last()->wholeSubtreeInvalid()) return; // If this set would invalidate the whole subtree we can discard all existing sets. if (invalidationSet->wholeSubtreeInvalid()) list.clear(); list.append(invalidationSet); element.setNeedsStyleInvalidation(); }