| Index: Source/core/css/RuleSet.cpp
|
| diff --git a/Source/core/css/RuleSet.cpp b/Source/core/css/RuleSet.cpp
|
| index f2fa53701061a08a790eb8899ead1a2adf013de3..97b459d9b2276a54a26337a8722fef21d17a61e7 100644
|
| --- a/Source/core/css/RuleSet.cpp
|
| +++ b/Source/core/css/RuleSet.cpp
|
| @@ -51,11 +51,6 @@ using namespace HTMLNames;
|
|
|
| // -----------------------------------------------------------------
|
|
|
| -static inline bool isDocumentScope(const ContainerNode* scope)
|
| -{
|
| - return !scope || scope->isDocumentNode();
|
| -}
|
| -
|
| static inline bool isSelectorMatchingHTMLBasedOnRuleHash(const CSSSelector* selector)
|
| {
|
| ASSERT(selector);
|
| @@ -404,7 +399,7 @@ void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const M
|
| addRegionRule(static_cast<StyleRuleRegion*>(rule), hasDocumentSecurityOrigin);
|
| } else if (rule->isHostRule()) {
|
| addHostRule(static_cast<StyleRuleHost*>(rule));
|
| - } else if (rule->isViewportRule()) {
|
| + } else if (rule->isViewportRule() && !(addRuleFlags & ViewportRuleIsProcessed)) {
|
| addViewportRule(static_cast<StyleRuleViewport*>(rule));
|
| } else if (rule->isSupportsRule() && static_cast<StyleRuleSupports*>(rule)->conditionIsSupported()) {
|
| addChildRules(static_cast<StyleRuleSupports*>(rule)->childRules(), medium, resolver, scope, hasDocumentSecurityOrigin, addRuleFlags);
|
| @@ -412,7 +407,7 @@ void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const M
|
| }
|
| }
|
|
|
| -void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, StyleResolver* resolver, const ContainerNode* scope)
|
| +void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, StyleResolver* resolver, const ContainerNode* scope, bool viewportRuleIsProcessed)
|
| {
|
| ASSERT(sheet);
|
|
|
| @@ -420,11 +415,11 @@ void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu
|
| for (unsigned i = 0; i < importRules.size(); ++i) {
|
| StyleRuleImport* importRule = importRules[i].get();
|
| if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.eval(importRule->mediaQueries(), resolver->viewportDependentMediaQueryResults())))
|
| - addRulesFromSheet(importRule->styleSheet(), medium, resolver, scope);
|
| + addRulesFromSheet(importRule->styleSheet(), medium, resolver, scope, viewportRuleIsProcessed);
|
| }
|
|
|
| bool hasDocumentSecurityOrigin = resolver && resolver->document().securityOrigin()->canRequest(sheet->baseURL());
|
| - AddRuleFlags addRuleFlags = static_cast<AddRuleFlags>((hasDocumentSecurityOrigin ? RuleHasDocumentSecurityOrigin : 0) | (!scope ? RuleCanUseFastCheckSelector : 0));
|
| + AddRuleFlags addRuleFlags = static_cast<AddRuleFlags>((hasDocumentSecurityOrigin ? RuleHasDocumentSecurityOrigin : 0) | (!scope ? RuleCanUseFastCheckSelector : 0) | (viewportRuleIsProcessed ? ViewportRuleIsProcessed : 0));
|
|
|
| addChildRules(sheet->childRules(), medium, resolver, scope, hasDocumentSecurityOrigin, addRuleFlags);
|
| }
|
|
|