| 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);
|
|
|