| Index: third_party/WebKit/Source/core/css/resolver/StyleRuleUsageTracker.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/resolver/StyleRuleUsageTracker.cpp b/third_party/WebKit/Source/core/css/resolver/StyleRuleUsageTracker.cpp
|
| index bd4629c7ef482abcc9e223f9c795eafeee195499..6296f178359bb5db677c599366789673d565acbc 100644
|
| --- a/third_party/WebKit/Source/core/css/resolver/StyleRuleUsageTracker.cpp
|
| +++ b/third_party/WebKit/Source/core/css/resolver/StyleRuleUsageTracker.cpp
|
| @@ -4,16 +4,35 @@
|
|
|
| #include "core/css/resolver/StyleRuleUsageTracker.h"
|
|
|
| +#include "core/css/CSSStyleSheet.h"
|
| #include "core/css/StyleRule.h"
|
|
|
| namespace blink {
|
|
|
| -bool StyleRuleUsageTracker::contains(StyleRule* rule) const {
|
| - return m_ruleList.contains(rule);
|
| +StyleRuleUsageTracker::RuleListByStyleSheet StyleRuleUsageTracker::takeDelta() {
|
| + RuleListByStyleSheet result;
|
| + result.swap(m_usedRulesDelta);
|
| + return result;
|
| +}
|
| +
|
| +void StyleRuleUsageTracker::track(const CSSStyleSheet* parentSheet,
|
| + const StyleRule* rule) {
|
| + if (!parentSheet)
|
| + return;
|
| + if (!m_usedRules.insert(std::make_pair(parentSheet, rule)).isNewEntry)
|
| + return;
|
| + auto it = m_usedRulesDelta.find(parentSheet);
|
| + if (it != m_usedRulesDelta.end()) {
|
| + it->value.push_back(rule);
|
| + } else {
|
| + m_usedRulesDelta.insert(parentSheet, HeapVector<Member<const StyleRule>>())
|
| + .storedValue->value.push_back(rule);
|
| + }
|
| }
|
|
|
| DEFINE_TRACE(StyleRuleUsageTracker) {
|
| - visitor->trace(m_ruleList);
|
| + visitor->trace(m_usedRules);
|
| + visitor->trace(m_usedRulesDelta);
|
| }
|
|
|
| } // namespace blink
|
|
|