Index: third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp |
index 280f83976659adc4c11dc90096f926add1edb9e8..4be7bd2628790818727edacab4bb03bbf75cfa59 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp |
@@ -201,7 +201,7 @@ void StyleResolver::appendCSSStyleSheet(CSSStyleSheet& cssSheet) |
ASSERT(cssSheet.ownerNode()); |
ASSERT(isHTMLStyleElement(cssSheet.ownerNode()) || isSVGStyleElement(cssSheet.ownerNode()) || cssSheet.ownerNode()->treeScope() == cssSheet.ownerDocument()); |
- if (cssSheet.mediaQueries() && !m_medium->eval(cssSheet.mediaQueries(), &m_viewportDependentMediaQueryResults)) |
+ if (cssSheet.mediaQueries() && !m_medium->eval(cssSheet.mediaQueries(), &m_viewportDependentMediaQueryResults, &m_deviceDependentMediaQueryResults)) |
return; |
TreeScope* treeScope = &cssSheet.ownerNode()->treeScope(); |
@@ -1530,12 +1530,18 @@ void StyleResolver::computeFont(ComputedStyle* style, const StylePropertySet& pr |
} |
} |
-void StyleResolver::addMediaQueryResults(const MediaQueryResultList& list) |
+void StyleResolver::addViewportDependentMediaQueries(const MediaQueryResultList& list) |
{ |
for (size_t i = 0; i < list.size(); ++i) |
m_viewportDependentMediaQueryResults.append(list[i]); |
} |
+void StyleResolver::addDeviceDependentMediaQueries(const MediaQueryResultList& list) |
+{ |
+ for (size_t i = 0; i < list.size(); ++i) |
+ m_deviceDependentMediaQueryResults.append(list[i]); |
+} |
+ |
bool StyleResolver::mediaQueryAffectedByViewportChange() const |
{ |
for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) { |
@@ -1545,12 +1551,22 @@ bool StyleResolver::mediaQueryAffectedByViewportChange() const |
return false; |
} |
+bool StyleResolver::mediaQueryAffectedByDeviceChange() const |
+{ |
+ for (unsigned i = 0; i < m_deviceDependentMediaQueryResults.size(); ++i) { |
+ if (m_medium->eval(m_deviceDependentMediaQueryResults[i]->expression()) != m_deviceDependentMediaQueryResults[i]->result()) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
DEFINE_TRACE(StyleResolver) |
{ |
#if ENABLE(OILPAN) |
visitor->trace(m_matchedPropertiesCache); |
visitor->trace(m_medium); |
visitor->trace(m_viewportDependentMediaQueryResults); |
+ visitor->trace(m_deviceDependentMediaQueryResults); |
visitor->trace(m_selectorFilter); |
visitor->trace(m_viewportStyleResolver); |
visitor->trace(m_features); |