| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
| 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. |
| 6 * All rights reserved. | 6 * All rights reserved. |
| 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
| 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 10 * (http://www.torchmobile.com/) | 10 * (http://www.torchmobile.com/) |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 } | 206 } |
| 207 | 207 |
| 208 void StyleResolver::appendCSSStyleSheet(CSSStyleSheet& cssSheet) { | 208 void StyleResolver::appendCSSStyleSheet(CSSStyleSheet& cssSheet) { |
| 209 DCHECK(!cssSheet.disabled()); | 209 DCHECK(!cssSheet.disabled()); |
| 210 DCHECK(cssSheet.ownerDocument()); | 210 DCHECK(cssSheet.ownerDocument()); |
| 211 DCHECK(cssSheet.ownerNode()); | 211 DCHECK(cssSheet.ownerNode()); |
| 212 DCHECK(isHTMLStyleElement(cssSheet.ownerNode()) || | 212 DCHECK(isHTMLStyleElement(cssSheet.ownerNode()) || |
| 213 isSVGStyleElement(cssSheet.ownerNode()) || | 213 isSVGStyleElement(cssSheet.ownerNode()) || |
| 214 cssSheet.ownerNode()->isConnected()); | 214 cssSheet.ownerNode()->isConnected()); |
| 215 | 215 |
| 216 const MediaQueryEvaluator& evaluator = | |
| 217 document().styleEngine().ensureMediaQueryEvaluator(); | |
| 218 if (cssSheet.mediaQueries() && | |
| 219 !evaluator.eval(cssSheet.mediaQueries(), | |
| 220 &m_viewportDependentMediaQueryResults, | |
| 221 &m_deviceDependentMediaQueryResults)) | |
| 222 return; | |
| 223 | |
| 224 TreeScope* treeScope = &cssSheet.ownerNode()->treeScope(); | 216 TreeScope* treeScope = &cssSheet.ownerNode()->treeScope(); |
| 225 // TODO(rune@opera.com): This is a workaround for crbug.com/559292 | 217 // TODO(rune@opera.com): This is a workaround for crbug.com/559292 |
| 226 // when we're in the middle of removing a subtree with a style element | 218 // when we're in the middle of removing a subtree with a style element |
| 227 // and the treescope has been changed but inDocument and isInShadowTree | 219 // and the treescope has been changed but inDocument and isInShadowTree |
| 228 // are not. | 220 // are not. |
| 229 // | 221 // |
| 230 // This check can be removed when crbug.com/567021 is fixed. | 222 // This check can be removed when crbug.com/567021 is fixed. |
| 231 if (cssSheet.ownerNode()->isInShadowTree() && | 223 if (cssSheet.ownerNode()->isInShadowTree() && |
| 232 treeScope->rootNode().isDocumentNode()) | 224 treeScope->rootNode().isDocumentNode()) |
| 233 return; | 225 return; |
| 234 | 226 |
| 235 // Sheets in the document scope of HTML imports apply to the main document | 227 // Sheets in the document scope of HTML imports apply to the main document |
| 236 // (m_document), so we override it for all document scoped sheets. | 228 // (m_document), so we override it for all document scoped sheets. |
| 237 if (treeScope->rootNode().isDocumentNode()) | 229 if (treeScope->rootNode().isDocumentNode()) |
| 238 treeScope = m_document; | 230 treeScope = m_document; |
| 239 treeScope->ensureScopedStyleResolver().appendCSSStyleSheet(cssSheet, | 231 treeScope->ensureScopedStyleResolver().appendCSSStyleSheet(cssSheet); |
| 240 evaluator); | |
| 241 } | 232 } |
| 242 | 233 |
| 243 void StyleResolver::appendPendingAuthorStyleSheets() { | 234 void StyleResolver::appendPendingAuthorStyleSheets() { |
| 244 for (const auto& styleSheet : m_pendingStyleSheets) | 235 for (const auto& styleSheet : m_pendingStyleSheets) |
| 245 appendCSSStyleSheet(*styleSheet); | 236 appendCSSStyleSheet(*styleSheet); |
| 246 | 237 |
| 247 m_pendingStyleSheets.clear(); | 238 m_pendingStyleSheets.clear(); |
| 248 } | 239 } |
| 249 | 240 |
| 250 void StyleResolver::appendAuthorStyleSheets( | 241 void StyleResolver::appendAuthorStyleSheets( |
| (...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1837 state.setStyle(style); | 1828 state.setStyle(style); |
| 1838 | 1829 |
| 1839 for (CSSPropertyID property : properties) { | 1830 for (CSSPropertyID property : properties) { |
| 1840 if (property == CSSPropertyLineHeight) | 1831 if (property == CSSPropertyLineHeight) |
| 1841 updateFont(state); | 1832 updateFont(state); |
| 1842 StyleBuilder::applyProperty(property, state, | 1833 StyleBuilder::applyProperty(property, state, |
| 1843 *propertySet.getPropertyCSSValue(property)); | 1834 *propertySet.getPropertyCSSValue(property)); |
| 1844 } | 1835 } |
| 1845 } | 1836 } |
| 1846 | 1837 |
| 1847 void StyleResolver::addViewportDependentMediaQueries( | |
| 1848 const MediaQueryResultList& list) { | |
| 1849 for (size_t i = 0; i < list.size(); ++i) | |
| 1850 m_viewportDependentMediaQueryResults.append(list[i]); | |
| 1851 } | |
| 1852 | |
| 1853 void StyleResolver::addDeviceDependentMediaQueries( | |
| 1854 const MediaQueryResultList& list) { | |
| 1855 for (size_t i = 0; i < list.size(); ++i) | |
| 1856 m_deviceDependentMediaQueryResults.append(list[i]); | |
| 1857 } | |
| 1858 | |
| 1859 bool StyleResolver::mediaQueryAffectedByViewportChange() const { | |
| 1860 const MediaQueryEvaluator& evaluator = | |
| 1861 document().styleEngine().ensureMediaQueryEvaluator(); | |
| 1862 for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) { | |
| 1863 if (evaluator.eval(m_viewportDependentMediaQueryResults[i]->expression()) != | |
| 1864 m_viewportDependentMediaQueryResults[i]->result()) | |
| 1865 return true; | |
| 1866 } | |
| 1867 return false; | |
| 1868 } | |
| 1869 | |
| 1870 bool StyleResolver::mediaQueryAffectedByDeviceChange() const { | |
| 1871 const MediaQueryEvaluator& evaluator = | |
| 1872 document().styleEngine().ensureMediaQueryEvaluator(); | |
| 1873 for (unsigned i = 0; i < m_deviceDependentMediaQueryResults.size(); ++i) { | |
| 1874 if (evaluator.eval(m_deviceDependentMediaQueryResults[i]->expression()) != | |
| 1875 m_deviceDependentMediaQueryResults[i]->result()) | |
| 1876 return true; | |
| 1877 } | |
| 1878 return false; | |
| 1879 } | |
| 1880 | |
| 1881 void StyleResolver::updateMediaType() { | 1838 void StyleResolver::updateMediaType() { |
| 1882 if (FrameView* view = document().view()) { | 1839 if (FrameView* view = document().view()) { |
| 1883 m_printMediaType = | 1840 m_printMediaType = |
| 1884 equalIgnoringCase(view->mediaType(), MediaTypeNames::print); | 1841 equalIgnoringCase(view->mediaType(), MediaTypeNames::print); |
| 1885 } | 1842 } |
| 1886 } | 1843 } |
| 1887 | 1844 |
| 1888 DEFINE_TRACE(StyleResolver) { | 1845 DEFINE_TRACE(StyleResolver) { |
| 1889 visitor->trace(m_matchedPropertiesCache); | 1846 visitor->trace(m_matchedPropertiesCache); |
| 1890 visitor->trace(m_viewportDependentMediaQueryResults); | |
| 1891 visitor->trace(m_deviceDependentMediaQueryResults); | |
| 1892 visitor->trace(m_selectorFilter); | 1847 visitor->trace(m_selectorFilter); |
| 1893 visitor->trace(m_styleSharingLists); | 1848 visitor->trace(m_styleSharingLists); |
| 1894 visitor->trace(m_pendingStyleSheets); | 1849 visitor->trace(m_pendingStyleSheets); |
| 1895 visitor->trace(m_document); | 1850 visitor->trace(m_document); |
| 1896 visitor->trace(m_tracker); | 1851 visitor->trace(m_tracker); |
| 1897 } | 1852 } |
| 1898 | 1853 |
| 1899 } // namespace blink | 1854 } // namespace blink |
| OLD | NEW |