Index: third_party/WebKit/Source/core/css/CSSStyleSheet.cpp |
diff --git a/third_party/WebKit/Source/core/css/CSSStyleSheet.cpp b/third_party/WebKit/Source/core/css/CSSStyleSheet.cpp |
index bd4773f8e3088ca945b3e988e3a68d266b40e041..0163aff08690f32acfdf91cf317612647b1fc14d 100644 |
--- a/third_party/WebKit/Source/core/css/CSSStyleSheet.cpp |
+++ b/third_party/WebKit/Source/core/css/CSSStyleSheet.cpp |
@@ -174,19 +174,18 @@ void CSSStyleSheet::didMutateRules() |
ASSERT(m_contents->isMutable()); |
ASSERT(m_contents->clientSize() <= 1); |
- didMutate(PartialRuleUpdate); |
+ didMutate(); |
} |
-void CSSStyleSheet::didMutate(StyleSheetUpdateType updateType) |
+void CSSStyleSheet::didMutate() |
{ |
Document* owner = ownerDocument(); |
if (!owner) |
return; |
- |
- // Need FullStyleUpdate when insertRule or deleteRule, |
- // because StyleSheetCollection::analyzeStyleSheetChange cannot detect partial rule update. |
- StyleResolverUpdateMode updateMode = updateType != PartialRuleUpdate ? AnalyzedStyleUpdate : FullStyleUpdate; |
- owner->styleEngine().setNeedsActiveStyleUpdate(this, updateMode); |
+ if (!ownerNode()) |
+ return; |
+ if (ownerNode()->inShadowIncludingDocument()) |
+ owner->styleEngine().setNeedsActiveStyleUpdate(ownerNode()->treeScope()); |
} |
void CSSStyleSheet::reattachChildRuleCSSOMWrappers() |
@@ -215,6 +214,17 @@ void CSSStyleSheet::setMediaQueries(MediaQuerySet* mediaQueries) |
} |
+bool CSSStyleSheet::matchesMediaQueries(const MediaQueryEvaluator& evaluator) |
+{ |
+ m_viewportDependentMediaQueryResults.clear(); |
+ m_deviceDependentMediaQueryResults.clear(); |
+ |
+ if (!m_mediaQueries) |
+ return true; |
+ |
+ return evaluator.eval(m_mediaQueries, &m_viewportDependentMediaQueryResults, &m_deviceDependentMediaQueryResults); |
+} |
+ |
unsigned CSSStyleSheet::length() const |
{ |
return m_contents->ruleCount(); |
@@ -238,7 +248,7 @@ CSSRule* CSSStyleSheet::item(unsigned index) |
void CSSStyleSheet::clearOwnerNode() |
{ |
- didMutate(EntireStyleSheetUpdate); |
+ didMutate(); |
if (m_ownerNode) |
m_contents->unregisterClient(this); |
m_ownerNode = nullptr; |
@@ -438,6 +448,8 @@ DEFINE_TRACE(CSSStyleSheet) |
{ |
visitor->trace(m_contents); |
visitor->trace(m_mediaQueries); |
+ visitor->trace(m_viewportDependentMediaQueryResults); |
+ visitor->trace(m_deviceDependentMediaQueryResults); |
visitor->trace(m_ownerNode); |
visitor->trace(m_ownerRule); |
visitor->trace(m_mediaCSSOMWrapper); |