Chromium Code Reviews| 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..19b864b581b9d1289e766f131ebb05c8090450e0 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 StyleRule* rule, |
| + const CSSStyleSheet* parentSheet) { |
| + if (!parentSheet) |
| + return; |
| + if (!m_usedRules.insert(rule).isNewEntry) |
|
pfeldman
2017/03/21 18:04:16
This is not entirely correct due to stylesheetcont
|
| + 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 |