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

Unified Diff: third_party/WebKit/Source/core/css/StyleRule.cpp

Issue 2289333003: CSS Lazy Parsing perf jobs (Closed)
Patch Set: CL for src perf tryjob to run blink_style.top_25 benchmark on all-android platform(s) Created 4 years, 2 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: third_party/WebKit/Source/core/css/StyleRule.cpp
diff --git a/third_party/WebKit/Source/core/css/StyleRule.cpp b/third_party/WebKit/Source/core/css/StyleRule.cpp
index ba0557f66cda937fd0365a65cd2389af9d83220d..2f237e23d14207cb75feb90c3d736ffa645fe5d8 100644
--- a/third_party/WebKit/Source/core/css/StyleRule.cpp
+++ b/third_party/WebKit/Source/core/css/StyleRule.cpp
@@ -208,23 +208,49 @@ unsigned StyleRule::averageSizeInBytes() {
}
StyleRule::StyleRule(CSSSelectorList selectorList, StylePropertySet* properties)
- : StyleRuleBase(Style), m_properties(properties) {
- m_selectorList = std::move(selectorList);
+ : StyleRuleBase(Style),
+ m_selectorList(std::move(selectorList)),
+ m_properties(properties) {}
+
+StyleRule::StyleRule(
+ CSSSelectorList selectorList,
+ std::unique_ptr<DeferredPropertiesClosure> deferredProperties)
+ : StyleRuleBase(Style),
+ m_selectorList(std::move(selectorList)),
+ m_deferred(std::move(deferredProperties)) {}
+
+const StylePropertySet& StyleRule::properties() const {
+ if (!m_properties) {
+ m_properties = (*m_deferred)();
+ m_deferred.reset();
+ }
+ return *m_properties;
}
StyleRule::StyleRule(const StyleRule& o)
: StyleRuleBase(o),
- m_properties(o.m_properties->mutableCopy()),
- m_selectorList(o.m_selectorList.copy()) {}
+ m_selectorList(o.m_selectorList.copy()),
+ m_properties(o.properties().mutableCopy()) {}
StyleRule::~StyleRule() {}
MutableStylePropertySet& StyleRule::mutableProperties() {
- if (!m_properties->isMutable())
+ // Ensure m_properties is initialized.
+ if (!properties().isMutable())
m_properties = m_properties->mutableCopy();
return *toMutableStylePropertySet(m_properties.get());
}
+bool StyleRule::propertiesHaveFailedOrCanceledSubresources() const {
+ return m_properties && m_properties->hasFailedOrCanceledSubresources();
+}
+
+bool StyleRule::shouldConsiderForMatchingRules(bool includeEmptyRules) const {
+ // Consider all non-empty property sets if parsing has not been deferred.
+ // Otherwise, consider all StyleRules with non-null deferred closures.
+ return includeEmptyRules || !(m_properties && m_properties->isEmpty());
+}
+
DEFINE_TRACE_AFTER_DISPATCH(StyleRule) {
visitor->trace(m_properties);
StyleRuleBase::traceAfterDispatch(visitor);
« no previous file with comments | « third_party/WebKit/Source/core/css/StyleRule.h ('k') | third_party/WebKit/Source/core/css/StyleSheetContents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698