Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 87503003: Moving fontSelector from StyleResolver to StyleEngine. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Reverted hasAnyFontFaceRule Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 static StylePropertySet* rightToLeftDeclaration() 116 static StylePropertySet* rightToLeftDeclaration()
117 { 117 {
118 DEFINE_STATIC_REF(MutableStylePropertySet, rightToLeftDecl, (MutableStylePro pertySet::create())); 118 DEFINE_STATIC_REF(MutableStylePropertySet, rightToLeftDecl, (MutableStylePro pertySet::create()));
119 if (rightToLeftDecl->isEmpty()) 119 if (rightToLeftDecl->isEmpty())
120 rightToLeftDecl->setProperty(CSSPropertyDirection, CSSValueRtl); 120 rightToLeftDecl->setProperty(CSSPropertyDirection, CSSValueRtl);
121 return rightToLeftDecl; 121 return rightToLeftDecl;
122 } 122 }
123 123
124 StyleResolver::StyleResolver(Document& document) 124 StyleResolver::StyleResolver(Document& document)
125 : m_document(document) 125 : m_document(document)
126 , m_fontSelector(CSSFontSelector::create(&document))
127 , m_viewportStyleResolver(ViewportStyleResolver::create(&document)) 126 , m_viewportStyleResolver(ViewportStyleResolver::create(&document))
128 , m_needCollectFeatures(false) 127 , m_needCollectFeatures(false)
129 , m_styleResourceLoader(document.fetcher()) 128 , m_styleResourceLoader(document.fetcher())
130 , m_styleResolverStatsSequence(0) 129 , m_styleResolverStatsSequence(0)
131 , m_accessCount(0) 130 , m_accessCount(0)
132 { 131 {
133 m_fontSelector->registerForInvalidationCallbacks(this);
134
135 // FIXME: Why do this here instead of as part of resolving style on the root ? 132 // FIXME: Why do this here instead of as part of resolving style on the root ?
136 CSSDefaultStyleSheets::loadDefaultStylesheetIfNecessary(); 133 CSSDefaultStyleSheets::loadDefaultStylesheetIfNecessary();
137 134
138 // Construct document root element default style. This is needed 135 // Construct document root element default style. This is needed
139 // to evaluate media queries that contain relative constraints, like "screen and (max-width: 10em)" 136 // to evaluate media queries that contain relative constraints, like "screen and (max-width: 10em)"
140 // This is here instead of constructor because when constructor is run, 137 // This is here instead of constructor because when constructor is run,
141 // Document doesn't have documentElement. 138 // Document doesn't have documentElement.
142 // NOTE: This assumes that element that gets passed to the styleForElement c all 139 // NOTE: This assumes that element that gets passed to the styleForElement c all
143 // is always from the document that owns the StyleResolver. 140 // is always from the document that owns the StyleResolver.
144 FrameView* view = document.view(); 141 FrameView* view = document.view();
(...skipping 11 matching lines...) Expand all
156 153
157 m_styleTree.clear(); 154 m_styleTree.clear();
158 155
159 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel ectors()); 156 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel ectors());
160 157
161 #if ENABLE(SVG_FONTS) 158 #if ENABLE(SVG_FONTS)
162 if (document.svgExtensions()) { 159 if (document.svgExtensions()) {
163 const HashSet<SVGFontFaceElement*>& svgFontFaceElements = document.svgEx tensions()->svgFontFaceElements(); 160 const HashSet<SVGFontFaceElement*>& svgFontFaceElements = document.svgEx tensions()->svgFontFaceElements();
164 HashSet<SVGFontFaceElement*>::const_iterator end = svgFontFaceElements.e nd(); 161 HashSet<SVGFontFaceElement*>::const_iterator end = svgFontFaceElements.e nd();
165 for (HashSet<SVGFontFaceElement*>::const_iterator it = svgFontFaceElemen ts.begin(); it != end; ++it) 162 for (HashSet<SVGFontFaceElement*>::const_iterator it = svgFontFaceElemen ts.begin(); it != end; ++it)
166 fontSelector()->addFontFaceRule((*it)->fontFaceRule()); 163 document.fontSelector()->addFontFaceRule((*it)->fontFaceRule());
167 } 164 }
168 #endif 165 #endif
169 166
170 document.styleEngine()->appendActiveAuthorStyleSheets(this); 167 document.styleEngine()->appendActiveAuthorStyleSheets(this);
171 } 168 }
172 169
173 void StyleResolver::initWatchedSelectorRules(const Vector<RefPtr<StyleRule> >& w atchedSelectors) 170 void StyleResolver::initWatchedSelectorRules(const Vector<RefPtr<StyleRule> >& w atchedSelectors)
174 { 171 {
175 if (!watchedSelectors.size()) 172 if (!watchedSelectors.size())
176 return; 173 return;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 unsigned size = styleSheets.size(); 224 unsigned size = styleSheets.size();
228 for (unsigned i = firstNew; i < size; ++i) 225 for (unsigned i = firstNew; i < size; ++i)
229 appendCSSStyleSheet(styleSheets[i].get()); 226 appendCSSStyleSheet(styleSheets[i].get());
230 } 227 }
231 228
232 void StyleResolver::finishAppendAuthorStyleSheets() 229 void StyleResolver::finishAppendAuthorStyleSheets()
233 { 230 {
234 collectFeatures(); 231 collectFeatures();
235 232
236 if (document().renderer() && document().renderer()->style()) 233 if (document().renderer() && document().renderer()->style())
237 document().renderer()->style()->font().update(fontSelector()); 234 document().renderer()->style()->font().update(document().fontSelector()) ;
238 235
239 collectViewportRules(); 236 collectViewportRules();
240 237
241 document().styleEngine()->resetCSSFeatureFlags(m_features); 238 document().styleEngine()->resetCSSFeatureFlags(m_features);
242 } 239 }
243 240
244 void StyleResolver::resetRuleFeatures() 241 void StyleResolver::resetRuleFeatures()
245 { 242 {
246 // Need to recreate RuleFeatureSet. 243 // Need to recreate RuleFeatureSet.
247 m_features.clear(); 244 m_features.clear();
(...skipping 15 matching lines...) Expand all
263 const Vector<StyleRuleKeyframes*> keyframesRules = authorRules.keyframesRule s(); 260 const Vector<StyleRuleKeyframes*> keyframesRules = authorRules.keyframesRule s();
264 for (unsigned i = 0; i < keyframesRules.size(); ++i) 261 for (unsigned i = 0; i < keyframesRules.size(); ++i)
265 ensureScopedStyleResolver(scope)->addKeyframeStyle(keyframesRules[i]); 262 ensureScopedStyleResolver(scope)->addKeyframeStyle(keyframesRules[i]);
266 263
267 addTreeBoundaryCrossingRules(authorRules.treeBoundaryCrossingRules(), scope) ; 264 addTreeBoundaryCrossingRules(authorRules.treeBoundaryCrossingRules(), scope) ;
268 265
269 // FIXME(BUG 72461): We don't add @font-face rules of scoped style sheets fo r the moment. 266 // FIXME(BUG 72461): We don't add @font-face rules of scoped style sheets fo r the moment.
270 if (!scope || scope->isDocumentNode()) { 267 if (!scope || scope->isDocumentNode()) {
271 const Vector<StyleRuleFontFace*> fontFaceRules = authorRules.fontFaceRul es(); 268 const Vector<StyleRuleFontFace*> fontFaceRules = authorRules.fontFaceRul es();
272 for (unsigned i = 0; i < fontFaceRules.size(); ++i) 269 for (unsigned i = 0; i < fontFaceRules.size(); ++i)
273 fontSelector()->addFontFaceRule(fontFaceRules[i]); 270 document().fontSelector()->addFontFaceRule(fontFaceRules[i]);
274 if (fontFaceRules.size()) 271 if (fontFaceRules.size())
275 invalidateMatchedPropertiesCache(); 272 invalidateMatchedPropertiesCache();
276 } else { 273 } else {
277 addTreeBoundaryCrossingRules(authorRules.shadowDistributedRules(), scope ); 274 addTreeBoundaryCrossingRules(authorRules.shadowDistributedRules(), scope );
278 } 275 }
279 } 276 }
280 277
281 void StyleResolver::resetFontSelector()
282 {
283 ASSERT(m_fontSelector);
284 m_fontSelector->unregisterForInvalidationCallbacks(this);
285 m_fontSelector->clearDocument();
286 invalidateMatchedPropertiesCache();
287
288 m_fontSelector = CSSFontSelector::create(&m_document);
289 m_fontSelector->registerForInvalidationCallbacks(this);
290 }
291
292 void StyleResolver::resetAuthorStyle(const ContainerNode* scopingNode) 278 void StyleResolver::resetAuthorStyle(const ContainerNode* scopingNode)
293 { 279 {
294 // FIXME: When chanking scoped attribute, scopingNode's hasScopedHTMLStyleCh ild has been already modified. 280 // FIXME: When chanking scoped attribute, scopingNode's hasScopedHTMLStyleCh ild has been already modified.
295 // So we cannot use hasScopedHTMLStyleChild flag here. 281 // So we cannot use hasScopedHTMLStyleChild flag here.
296 ScopedStyleResolver* resolver = scopingNode ? m_styleTree.lookupScopedStyleR esolverFor(scopingNode) : m_styleTree.scopedStyleResolverForDocument(); 282 ScopedStyleResolver* resolver = scopingNode ? m_styleTree.lookupScopedStyleR esolverFor(scopingNode) : m_styleTree.scopedStyleResolverForDocument();
297 if (!resolver) 283 if (!resolver)
298 return; 284 return;
299 285
300 treeBoundaryCrossingRules().reset(scopingNode); 286 treeBoundaryCrossingRules().reset(scopingNode);
301 287
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 390 }
405 391
406 void StyleResolver::popParentShadowRoot(const ShadowRoot& shadowRoot) 392 void StyleResolver::popParentShadowRoot(const ShadowRoot& shadowRoot)
407 { 393 {
408 ASSERT(shadowRoot.host()); 394 ASSERT(shadowRoot.host());
409 m_styleTree.popStyleCache(shadowRoot); 395 m_styleTree.popStyleCache(shadowRoot);
410 } 396 }
411 397
412 StyleResolver::~StyleResolver() 398 StyleResolver::~StyleResolver()
413 { 399 {
414 m_fontSelector->unregisterForInvalidationCallbacks(this);
415 m_fontSelector->clearDocument();
416 m_viewportStyleResolver->clearDocument(); 400 m_viewportStyleResolver->clearDocument();
417 } 401 }
418 402
419 inline void StyleResolver::collectTreeBoundaryCrossingRules(Element* element, El ementRuleCollector& collector, bool includeEmptyRules) 403 inline void StyleResolver::collectTreeBoundaryCrossingRules(Element* element, El ementRuleCollector& collector, bool includeEmptyRules)
420 { 404 {
421 if (m_treeBoundaryCrossingRules.isEmpty()) 405 if (m_treeBoundaryCrossingRules.isEmpty())
422 return; 406 return;
423 407
424 RuleRange ruleRange = collector.matchedResult().ranges.authorRuleRange(); 408 RuleRange ruleRange = collector.matchedResult().ranges.authorRuleRange();
425 409
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 ASSERT(documentSettings()); 635 ASSERT(documentSettings());
652 ASSERT(!hasPendingAuthorStyleSheets()); 636 ASSERT(!hasPendingAuthorStyleSheets());
653 ASSERT(!m_needCollectFeatures); 637 ASSERT(!m_needCollectFeatures);
654 638
655 // Once an element has a renderer, we don't try to destroy it, since otherwi se the renderer 639 // Once an element has a renderer, we don't try to destroy it, since otherwi se the renderer
656 // will vanish if a style recalc happens during loading. 640 // will vanish if a style recalc happens during loading.
657 if (sharingBehavior == AllowStyleSharing && !element->document().haveStylesh eetsLoaded() && !element->renderer()) { 641 if (sharingBehavior == AllowStyleSharing && !element->document().haveStylesh eetsLoaded() && !element->renderer()) {
658 if (!s_styleNotYetAvailable) { 642 if (!s_styleNotYetAvailable) {
659 s_styleNotYetAvailable = RenderStyle::create().leakRef(); 643 s_styleNotYetAvailable = RenderStyle::create().leakRef();
660 s_styleNotYetAvailable->setDisplay(NONE); 644 s_styleNotYetAvailable->setDisplay(NONE);
661 s_styleNotYetAvailable->font().update(m_fontSelector); 645 s_styleNotYetAvailable->font().update(document().fontSelector());
662 } 646 }
663 element->document().setHasNodesWithPlaceholderStyle(); 647 element->document().setHasNodesWithPlaceholderStyle();
664 return s_styleNotYetAvailable; 648 return s_styleNotYetAvailable;
665 } 649 }
666 650
667 didAccess(); 651 didAccess();
668 652
669 if (element == document().documentElement()) 653 if (element == document().documentElement())
670 resetDirectionAndWritingModeOnDocument(document()); 654 resetDirectionAndWritingModeOnDocument(document());
671 StyleResolverState state(document(), element, defaultParent, regionForStylin g); 655 StyleResolverState state(document(), element, defaultParent, regionForStylin g);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 // Now do rest of the properties. 777 // Now do rest of the properties.
794 if (keyframe->properties()) 778 if (keyframe->properties())
795 applyMatchedProperties<LowPriorityProperties>(state, result, false, 0, r esult.matchedProperties.size() - 1, inheritedOnly); 779 applyMatchedProperties<LowPriorityProperties>(state, result, false, 0, r esult.matchedProperties.size() - 1, inheritedOnly);
796 780
797 // If our font got dirtied by one of the non-essential font props, 781 // If our font got dirtied by one of the non-essential font props,
798 // go ahead and update it a second time. 782 // go ahead and update it a second time.
799 updateFont(state); 783 updateFont(state);
800 784
801 // Start loading resources referenced by this style. 785 // Start loading resources referenced by this style.
802 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources()); 786 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources());
803 m_fontSelector->loadPendingFonts(); 787 document().fontSelector()->loadPendingFonts();
804 788
805 didAccess(); 789 didAccess();
806 790
807 return state.takeStyle(); 791 return state.takeStyle();
808 } 792 }
809 793
810 void StyleResolver::keyframeStylesForAnimation(Element* e, const RenderStyle& el ementStyle, KeyframeList& list) 794 void StyleResolver::keyframeStylesForAnimation(Element* e, const RenderStyle& el ementStyle, KeyframeList& list)
811 { 795 {
812 ASSERT(!RuntimeEnabledFeatures::webAnimationsCSSEnabled()); 796 ASSERT(!RuntimeEnabledFeatures::webAnimationsCSSEnabled());
813 list.clear(); 797 list.clear();
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 // Line-height is set when we are sure we decided on the font-size. 941 // Line-height is set when we are sure we decided on the font-size.
958 if (state.lineHeightValue()) 942 if (state.lineHeightValue())
959 StyleBuilder::applyProperty(CSSPropertyLineHeight, state, state.lineHeig htValue()); 943 StyleBuilder::applyProperty(CSSPropertyLineHeight, state, state.lineHeig htValue());
960 944
961 applyMatchedProperties<LowPriorityProperties>(state, result, false, 0, resul t.matchedProperties.size() - 1, inheritedOnly); 945 applyMatchedProperties<LowPriorityProperties>(state, result, false, 0, resul t.matchedProperties.size() - 1, inheritedOnly);
962 946
963 addContentAttrValuesToFeatures(state.contentAttrValues(), m_features); 947 addContentAttrValuesToFeatures(state.contentAttrValues(), m_features);
964 948
965 // Start loading resources referenced by this style. 949 // Start loading resources referenced by this style.
966 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources()); 950 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources());
967 m_fontSelector->loadPendingFonts(); 951 document().fontSelector()->loadPendingFonts();
968 952
969 didAccess(); 953 didAccess();
970 954
971 // Now return the style. 955 // Now return the style.
972 return state.takeStyle(); 956 return state.takeStyle();
973 } 957 }
974 958
975 void StyleResolver::collectViewportRules() 959 void StyleResolver::collectViewportRules()
976 { 960 {
977 viewportStyleResolver()->collectViewportRules(CSSDefaultStyleSheets::default Style, ViewportStyleResolver::UserAgentOrigin); 961 viewportStyleResolver()->collectViewportRules(CSSDefaultStyleSheets::default Style, ViewportStyleResolver::UserAgentOrigin);
978 962
979 if (document().isMobileDocument()) 963 if (document().isMobileDocument())
980 viewportStyleResolver()->collectViewportRules(CSSDefaultStyleSheets::xht mlMobileProfileStyle(), ViewportStyleResolver::UserAgentOrigin); 964 viewportStyleResolver()->collectViewportRules(CSSDefaultStyleSheets::xht mlMobileProfileStyle(), ViewportStyleResolver::UserAgentOrigin);
981 965
982 if (ScopedStyleResolver* scopedResolver = m_styleTree.scopedStyleResolverFor Document()) 966 if (ScopedStyleResolver* scopedResolver = m_styleTree.scopedStyleResolverFor Document())
983 scopedResolver->collectViewportRulesTo(this); 967 scopedResolver->collectViewportRulesTo(this);
984 968
985 viewportStyleResolver()->resolve(); 969 viewportStyleResolver()->resolve();
986 } 970 }
987 971
988 PassRefPtr<RenderStyle> StyleResolver::defaultStyleForElement() 972 PassRefPtr<RenderStyle> StyleResolver::defaultStyleForElement()
989 { 973 {
990 StyleResolverState state(document(), 0); 974 StyleResolverState state(document(), 0);
991 state.setStyle(RenderStyle::create()); 975 state.setStyle(RenderStyle::create());
992 state.fontBuilder().initForStyleResolve(document(), state.style(), state.use SVGZoomRules()); 976 state.fontBuilder().initForStyleResolve(document(), state.style(), state.use SVGZoomRules());
993 state.style()->setLineHeight(RenderStyle::initialLineHeight()); 977 state.style()->setLineHeight(RenderStyle::initialLineHeight());
994 state.setLineHeightValue(0); 978 state.setLineHeightValue(0);
995 state.fontBuilder().setInitial(state.style()->effectiveZoom()); 979 state.fontBuilder().setInitial(state.style()->effectiveZoom());
996 state.style()->font().update(fontSelector()); 980 state.style()->font().update(document().fontSelector());
997 return state.takeStyle(); 981 return state.takeStyle();
998 } 982 }
999 983
1000 PassRefPtr<RenderStyle> StyleResolver::styleForText(Text* textNode) 984 PassRefPtr<RenderStyle> StyleResolver::styleForText(Text* textNode)
1001 { 985 {
1002 ASSERT(textNode); 986 ASSERT(textNode);
1003 987
1004 NodeRenderingTraversal::ParentDetails parentDetails; 988 NodeRenderingTraversal::ParentDetails parentDetails;
1005 Node* parentNode = NodeRenderingTraversal::parent(textNode, &parentDetails); 989 Node* parentNode = NodeRenderingTraversal::parent(textNode, &parentDetails);
1006 if (!parentNode || !parentNode->renderStyle() || parentDetails.resetStyleInh eritance()) 990 if (!parentNode || !parentNode->renderStyle() || parentDetails.resetStyleInh eritance())
1007 return defaultStyleForElement(); 991 return defaultStyleForElement();
1008 return parentNode->renderStyle(); 992 return parentNode->renderStyle();
1009 } 993 }
1010 994
1011 bool StyleResolver::checkRegionStyle(Element* regionElement) 995 bool StyleResolver::checkRegionStyle(Element* regionElement)
1012 { 996 {
1013 // FIXME (BUG 72472): We don't add @-webkit-region rules of scoped style she ets for the moment, 997 // FIXME (BUG 72472): We don't add @-webkit-region rules of scoped style she ets for the moment,
1014 // so all region rules are global by default. Verify whether that can stand or needs changing. 998 // so all region rules are global by default. Verify whether that can stand or needs changing.
1015 if (ScopedStyleResolver* scopedResolver = m_styleTree.scopedStyleResolverFor Document()) { 999 if (ScopedStyleResolver* scopedResolver = m_styleTree.scopedStyleResolverFor Document()) {
1016 if (scopedResolver->checkRegionStyle(regionElement)) 1000 if (scopedResolver->checkRegionStyle(regionElement))
1017 return true; 1001 return true;
1018 } 1002 }
1019 return false; 1003 return false;
1020 } 1004 }
1021 1005
1022 void StyleResolver::updateFont(StyleResolverState& state) 1006 void StyleResolver::updateFont(StyleResolverState& state)
1023 { 1007 {
1024 state.fontBuilder().createFont(m_fontSelector, state.parentStyle(), state.st yle()); 1008 state.fontBuilder().createFont(document().fontSelector(), state.parentStyle( ), state.style());
1025 } 1009 }
1026 1010
1027 PassRefPtr<StyleRuleList> StyleResolver::styleRulesForElement(Element* element, unsigned rulesToInclude) 1011 PassRefPtr<StyleRuleList> StyleResolver::styleRulesForElement(Element* element, unsigned rulesToInclude)
1028 { 1012 {
1029 ASSERT(element); 1013 ASSERT(element);
1030 StyleResolverState state(document(), element); 1014 StyleResolverState state(document(), element);
1031 ElementRuleCollector collector(state.elementContext(), m_selectorFilter, sta te.style()); 1015 ElementRuleCollector collector(state.elementContext(), m_selectorFilter, sta te.style());
1032 collector.setMode(SelectorChecker::CollectingStyleRules); 1016 collector.setMode(SelectorChecker::CollectingStyleRules);
1033 collectPseudoRulesForElement(element, collector, NOPSEUDO, rulesToInclude); 1017 collectPseudoRulesForElement(element, collector, NOPSEUDO, rulesToInclude);
1034 return collector.matchedStyleRuleList(); 1018 return collector.matchedStyleRuleList();
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1347 state.cacheUserAgentBorderAndBackground(); 1331 state.cacheUserAgentBorderAndBackground();
1348 1332
1349 // Now do the author and user normal priority properties and all the !import ant properties. 1333 // Now do the author and user normal priority properties and all the !import ant properties.
1350 applyMatchedProperties<LowPriorityProperties>(state, matchResult, false, mat chResult.ranges.lastUARule + 1, matchResult.matchedProperties.size() - 1, applyI nheritedOnly); 1334 applyMatchedProperties<LowPriorityProperties>(state, matchResult, false, mat chResult.ranges.lastUARule + 1, matchResult.matchedProperties.size() - 1, applyI nheritedOnly);
1351 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInherite dOnly); 1335 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInherite dOnly);
1352 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstUserRule, matchResult.ranges.lastUserRule, applyInheritedOnl y); 1336 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstUserRule, matchResult.ranges.lastUserRule, applyInheritedOnl y);
1353 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly); 1337 applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matc hResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
1354 1338
1355 // Start loading resources referenced by this style. 1339 // Start loading resources referenced by this style.
1356 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources()); 1340 m_styleResourceLoader.loadPendingResources(state.style(), state.elementStyle Resources());
1357 m_fontSelector->loadPendingFonts(); 1341 document().fontSelector()->loadPendingFonts();
1358 1342
1359 if (!cachedMatchedProperties && cacheHash && MatchedPropertiesCache::isCache able(element, state.style(), state.parentStyle())) { 1343 if (!cachedMatchedProperties && cacheHash && MatchedPropertiesCache::isCache able(element, state.style(), state.parentStyle())) {
1360 INCREMENT_STYLE_STATS_COUNTER(*this, matchedPropertyCacheAdded); 1344 INCREMENT_STYLE_STATS_COUNTER(*this, matchedPropertyCacheAdded);
1361 m_matchedPropertiesCache.add(state.style(), state.parentStyle(), cacheHa sh, matchResult); 1345 m_matchedPropertiesCache.add(state.style(), state.parentStyle(), cacheHa sh, matchResult);
1362 } 1346 }
1363 1347
1364 applyAnimatedProperties(state, animatingElement); 1348 applyAnimatedProperties(state, animatingElement);
1365 1349
1366 ASSERT(!state.fontBuilder().fontDirty()); 1350 ASSERT(!state.fontBuilder().fontDirty());
1367 } 1351 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 bool StyleResolver::affectedByViewportChange() const 1417 bool StyleResolver::affectedByViewportChange() const
1434 { 1418 {
1435 for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) { 1419 for (unsigned i = 0; i < m_viewportDependentMediaQueryResults.size(); ++i) {
1436 if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expressio n) != m_viewportDependentMediaQueryResults[i]->m_result) 1420 if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expressio n) != m_viewportDependentMediaQueryResults[i]->m_result)
1437 return true; 1421 return true;
1438 } 1422 }
1439 return false; 1423 return false;
1440 } 1424 }
1441 1425
1442 } // namespace WebCore 1426 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698