| Index: third_party/WebKit/Source/core/css/resolver/ScopedStyleResolver.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/resolver/ScopedStyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/ScopedStyleResolver.cpp
|
| index 28002081509a319e7f99781742b4be18c31b3f2e..f1f2e8ca6ee8c6bf13238e8fd87de03c3871d771 100644
|
| --- a/third_party/WebKit/Source/core/css/resolver/ScopedStyleResolver.cpp
|
| +++ b/third_party/WebKit/Source/core/css/resolver/ScopedStyleResolver.cpp
|
| @@ -83,25 +83,22 @@ void ScopedStyleResolver::addFontFaceRules(const RuleSet& ruleSet) {
|
| document.styleResolver()->invalidateMatchedPropertiesCache();
|
| }
|
|
|
| -void ScopedStyleResolver::appendCSSStyleSheet(
|
| - CSSStyleSheet& cssSheet,
|
| - const MediaQueryEvaluator& medium) {
|
| +void ScopedStyleResolver::appendCSSStyleSheet(CSSStyleSheet& cssSheet) {
|
| + RuleSet* ruleSet =
|
| + treeScope().document().styleEngine().ruleSetForSheet(cssSheet);
|
| +
|
| + m_viewportDependentMediaQueryResults.appendVector(
|
| + cssSheet.viewportDependentMediaQueryResults());
|
| + m_deviceDependentMediaQueryResults.appendVector(
|
| + cssSheet.deviceDependentMediaQueryResults());
|
| + if (!ruleSet)
|
| + return;
|
| +
|
| unsigned index = m_authorStyleSheets.size();
|
| m_authorStyleSheets.append(&cssSheet);
|
| - StyleSheetContents* sheet = cssSheet.contents();
|
| - AddRuleFlags addRuleFlags =
|
| - treeScope().document().getSecurityOrigin()->canRequest(sheet->baseURL())
|
| - ? RuleHasDocumentSecurityOrigin
|
| - : RuleHasNoSpecialState;
|
| - const RuleSet& ruleSet = sheet->ensureRuleSet(medium, addRuleFlags);
|
| -
|
| - addKeyframeRules(ruleSet);
|
| - addFontFaceRules(ruleSet);
|
| - addTreeBoundaryCrossingRules(ruleSet, &cssSheet, index);
|
| - treeScope().document().styleResolver()->addViewportDependentMediaQueries(
|
| - ruleSet.viewportDependentMediaQueryResults());
|
| - treeScope().document().styleResolver()->addDeviceDependentMediaQueries(
|
| - ruleSet.deviceDependentMediaQueryResults());
|
| + addKeyframeRules(*ruleSet);
|
| + addFontFaceRules(*ruleSet);
|
| + addTreeBoundaryCrossingRules(*ruleSet, &cssSheet, index);
|
| }
|
|
|
| void ScopedStyleResolver::appendActiveStyleSheets(
|
| @@ -110,6 +107,10 @@ void ScopedStyleResolver::appendActiveStyleSheets(
|
| for (auto activeIterator = activeSheets.begin() + index;
|
| activeIterator != activeSheets.end(); activeIterator++) {
|
| CSSStyleSheet* sheet = activeIterator->first;
|
| + m_viewportDependentMediaQueryResults.appendVector(
|
| + sheet->viewportDependentMediaQueryResults());
|
| + m_deviceDependentMediaQueryResults.appendVector(
|
| + sheet->deviceDependentMediaQueryResults());
|
| if (!activeIterator->second)
|
| continue;
|
| const RuleSet& ruleSet = *activeIterator->second;
|
| @@ -124,6 +125,11 @@ void ScopedStyleResolver::collectFeaturesTo(
|
| RuleFeatureSet& features,
|
| HeapHashSet<Member<const StyleSheetContents>>&
|
| visitedSharedStyleSheetContents) const {
|
| + features.viewportDependentMediaQueryResults().appendVector(
|
| + m_viewportDependentMediaQueryResults);
|
| + features.deviceDependentMediaQueryResults().appendVector(
|
| + m_deviceDependentMediaQueryResults);
|
| +
|
| for (size_t i = 0; i < m_authorStyleSheets.size(); ++i) {
|
| ASSERT(m_authorStyleSheets[i]->ownerNode());
|
| StyleSheetContents* contents = m_authorStyleSheets[i]->contents();
|
| @@ -141,6 +147,8 @@ void ScopedStyleResolver::collectFeaturesTo(
|
|
|
| void ScopedStyleResolver::resetAuthorStyle() {
|
| m_authorStyleSheets.clear();
|
| + m_viewportDependentMediaQueryResults.clear();
|
| + m_deviceDependentMediaQueryResults.clear();
|
| m_keyframesRuleMap.clear();
|
| m_treeBoundaryCrossingRuleSet = nullptr;
|
| m_hasDeepOrShadowSelector = false;
|
| @@ -262,6 +270,8 @@ void ScopedStyleResolver::matchPageRules(PageRuleCollector& collector) {
|
| DEFINE_TRACE(ScopedStyleResolver) {
|
| visitor->trace(m_scope);
|
| visitor->trace(m_authorStyleSheets);
|
| + visitor->trace(m_viewportDependentMediaQueryResults);
|
| + visitor->trace(m_deviceDependentMediaQueryResults);
|
| visitor->trace(m_keyframesRuleMap);
|
| visitor->trace(m_treeBoundaryCrossingRuleSet);
|
| }
|
|
|