| 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.
All rights reserved. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
All rights reserved. |
| 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
| 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #include "StylePropertyShorthand.h" | 35 #include "StylePropertyShorthand.h" |
| 36 #include "core/animation/ActiveAnimations.h" | 36 #include "core/animation/ActiveAnimations.h" |
| 37 #include "core/animation/AnimatableLength.h" | 37 #include "core/animation/AnimatableLength.h" |
| 38 #include "core/animation/AnimatableValue.h" | 38 #include "core/animation/AnimatableValue.h" |
| 39 #include "core/animation/Animation.h" | 39 #include "core/animation/Animation.h" |
| 40 #include "core/animation/DocumentTimeline.h" | 40 #include "core/animation/DocumentTimeline.h" |
| 41 #include "core/animation/css/CSSAnimatableValueFactory.h" | 41 #include "core/animation/css/CSSAnimatableValueFactory.h" |
| 42 #include "core/animation/css/CSSAnimations.h" | 42 #include "core/animation/css/CSSAnimations.h" |
| 43 #include "core/css/CSSCalculationValue.h" | 43 #include "core/css/CSSCalculationValue.h" |
| 44 #include "core/css/CSSDefaultStyleSheets.h" | 44 #include "core/css/CSSDefaultStyleSheets.h" |
| 45 #include "core/css/CSSFontFace.h" |
| 45 #include "core/css/CSSFontSelector.h" | 46 #include "core/css/CSSFontSelector.h" |
| 46 #include "core/css/CSSKeyframeRule.h" | 47 #include "core/css/CSSKeyframeRule.h" |
| 47 #include "core/css/CSSKeyframesRule.h" | 48 #include "core/css/CSSKeyframesRule.h" |
| 48 #include "core/css/CSSParser.h" | 49 #include "core/css/CSSParser.h" |
| 49 #include "core/css/CSSReflectValue.h" | 50 #include "core/css/CSSReflectValue.h" |
| 50 #include "core/css/CSSRuleList.h" | 51 #include "core/css/CSSRuleList.h" |
| 51 #include "core/css/CSSSelector.h" | 52 #include "core/css/CSSSelector.h" |
| 52 #include "core/css/CSSStyleRule.h" | 53 #include "core/css/CSSStyleRule.h" |
| 53 #include "core/css/CSSValueList.h" | 54 #include "core/css/CSSValueList.h" |
| 54 #include "core/css/CSSVariableValue.h" | 55 #include "core/css/CSSVariableValue.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 } | 115 } |
| 115 | 116 |
| 116 static StylePropertySet* rightToLeftDeclaration() | 117 static StylePropertySet* rightToLeftDeclaration() |
| 117 { | 118 { |
| 118 DEFINE_STATIC_REF(MutableStylePropertySet, rightToLeftDecl, (MutableStylePro
pertySet::create())); | 119 DEFINE_STATIC_REF(MutableStylePropertySet, rightToLeftDecl, (MutableStylePro
pertySet::create())); |
| 119 if (rightToLeftDecl->isEmpty()) | 120 if (rightToLeftDecl->isEmpty()) |
| 120 rightToLeftDecl->setProperty(CSSPropertyDirection, CSSValueRtl); | 121 rightToLeftDecl->setProperty(CSSPropertyDirection, CSSValueRtl); |
| 121 return rightToLeftDecl; | 122 return rightToLeftDecl; |
| 122 } | 123 } |
| 123 | 124 |
| 125 static void addFontFaceRule(Document* document, CSSFontSelector* cssFontSelector
, const StyleRuleFontFace* fontFaceRule) |
| 126 { |
| 127 RefPtr<CSSFontFace> cssFontFace = CSSFontFace::createFromStyleRule(document,
fontFaceRule); |
| 128 if (cssFontFace) |
| 129 cssFontSelector->addFontFaceRule(fontFaceRule, cssFontFace); |
| 130 } |
| 131 |
| 124 StyleResolver::StyleResolver(Document& document) | 132 StyleResolver::StyleResolver(Document& document) |
| 125 : m_document(document) | 133 : m_document(document) |
| 126 , m_fontSelector(CSSFontSelector::create(&document)) | 134 , m_fontSelector(CSSFontSelector::create(&document)) |
| 127 , m_viewportStyleResolver(ViewportStyleResolver::create(&document)) | 135 , m_viewportStyleResolver(ViewportStyleResolver::create(&document)) |
| 128 , m_needCollectFeatures(false) | 136 , m_needCollectFeatures(false) |
| 129 , m_styleResourceLoader(document.fetcher()) | 137 , m_styleResourceLoader(document.fetcher()) |
| 130 , m_styleResolverStatsSequence(0) | 138 , m_styleResolverStatsSequence(0) |
| 131 , m_accessCount(0) | 139 , m_accessCount(0) |
| 132 { | 140 { |
| 133 m_fontSelector->registerForInvalidationCallbacks(this); | 141 m_fontSelector->registerForInvalidationCallbacks(this); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 156 | 164 |
| 157 m_styleTree.clear(); | 165 m_styleTree.clear(); |
| 158 | 166 |
| 159 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel
ectors()); | 167 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel
ectors()); |
| 160 | 168 |
| 161 #if ENABLE(SVG_FONTS) | 169 #if ENABLE(SVG_FONTS) |
| 162 if (document.svgExtensions()) { | 170 if (document.svgExtensions()) { |
| 163 const HashSet<SVGFontFaceElement*>& svgFontFaceElements = document.svgEx
tensions()->svgFontFaceElements(); | 171 const HashSet<SVGFontFaceElement*>& svgFontFaceElements = document.svgEx
tensions()->svgFontFaceElements(); |
| 164 HashSet<SVGFontFaceElement*>::const_iterator end = svgFontFaceElements.e
nd(); | 172 HashSet<SVGFontFaceElement*>::const_iterator end = svgFontFaceElements.e
nd(); |
| 165 for (HashSet<SVGFontFaceElement*>::const_iterator it = svgFontFaceElemen
ts.begin(); it != end; ++it) | 173 for (HashSet<SVGFontFaceElement*>::const_iterator it = svgFontFaceElemen
ts.begin(); it != end; ++it) |
| 166 fontSelector()->addFontFaceRule((*it)->fontFaceRule()); | 174 addFontFaceRule(&document, fontSelector(), (*it)->fontFaceRule()); |
| 167 } | 175 } |
| 168 #endif | 176 #endif |
| 169 } | 177 } |
| 170 | 178 |
| 171 void StyleResolver::initWatchedSelectorRules(const Vector<RefPtr<StyleRule> >& w
atchedSelectors) | 179 void StyleResolver::initWatchedSelectorRules(const Vector<RefPtr<StyleRule> >& w
atchedSelectors) |
| 172 { | 180 { |
| 173 if (!watchedSelectors.size()) | 181 if (!watchedSelectors.size()) |
| 174 return; | 182 return; |
| 175 m_watchedSelectorsRules = RuleSet::create(); | 183 m_watchedSelectorsRules = RuleSet::create(); |
| 176 for (unsigned i = 0; i < watchedSelectors.size(); ++i) | 184 for (unsigned i = 0; i < watchedSelectors.size(); ++i) |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 const Vector<StyleRuleKeyframes*> keyframesRules = authorRules.keyframesRule
s(); | 269 const Vector<StyleRuleKeyframes*> keyframesRules = authorRules.keyframesRule
s(); |
| 262 for (unsigned i = 0; i < keyframesRules.size(); ++i) | 270 for (unsigned i = 0; i < keyframesRules.size(); ++i) |
| 263 ensureScopedStyleResolver(scope)->addKeyframeStyle(keyframesRules[i]); | 271 ensureScopedStyleResolver(scope)->addKeyframeStyle(keyframesRules[i]); |
| 264 | 272 |
| 265 addTreeBoundaryCrossingRules(authorRules.treeBoundaryCrossingRules(), scope)
; | 273 addTreeBoundaryCrossingRules(authorRules.treeBoundaryCrossingRules(), scope)
; |
| 266 | 274 |
| 267 // FIXME(BUG 72461): We don't add @font-face rules of scoped style sheets fo
r the moment. | 275 // FIXME(BUG 72461): We don't add @font-face rules of scoped style sheets fo
r the moment. |
| 268 if (!scope || scope->isDocumentNode()) { | 276 if (!scope || scope->isDocumentNode()) { |
| 269 const Vector<StyleRuleFontFace*> fontFaceRules = authorRules.fontFaceRul
es(); | 277 const Vector<StyleRuleFontFace*> fontFaceRules = authorRules.fontFaceRul
es(); |
| 270 for (unsigned i = 0; i < fontFaceRules.size(); ++i) | 278 for (unsigned i = 0; i < fontFaceRules.size(); ++i) |
| 271 fontSelector()->addFontFaceRule(fontFaceRules[i]); | 279 addFontFaceRule(&m_document, fontSelector(), fontFaceRules[i]); |
| 272 if (fontFaceRules.size()) | 280 if (fontFaceRules.size()) |
| 273 invalidateMatchedPropertiesCache(); | 281 invalidateMatchedPropertiesCache(); |
| 274 } else { | 282 } else { |
| 275 addTreeBoundaryCrossingRules(authorRules.shadowDistributedRules(), scope
); | 283 addTreeBoundaryCrossingRules(authorRules.shadowDistributedRules(), scope
); |
| 276 } | 284 } |
| 277 } | 285 } |
| 278 | 286 |
| 279 void StyleResolver::resetFontSelector() | 287 void StyleResolver::resetFontSelector() |
| 280 { | 288 { |
| 281 ASSERT(m_fontSelector); | 289 ASSERT(m_fontSelector); |
| (...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 bool StyleResolver::affectedByViewportChange() const | 1439 bool StyleResolver::affectedByViewportChange() const |
| 1432 { | 1440 { |
| 1433 for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) { | 1441 for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) { |
| 1434 if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expressio
n) != m_viewportDependentMediaQueryResults[i]->m_result) | 1442 if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expressio
n) != m_viewportDependentMediaQueryResults[i]->m_result) |
| 1435 return true; | 1443 return true; |
| 1436 } | 1444 } |
| 1437 return false; | 1445 return false; |
| 1438 } | 1446 } |
| 1439 | 1447 |
| 1440 } // namespace WebCore | 1448 } // namespace WebCore |
| OLD | NEW |