Changeset 141964 in webkit
- Timestamp:
- Feb 5, 2013 8:28:57 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r141928 r141964 1071 1071 css/CSSValueList.cpp 1072 1072 css/CSSValuePool.cpp 1073 css/DocumentRuleSets.cpp 1073 1074 css/FontFeatureValue.cpp 1074 1075 css/FontValue.cpp -
trunk/Source/WebCore/ChangeLog
r141963 r141964 1 2013-02-05 Hayato Ito <hayato@chromium.org> 2 3 Split each RuleSet and feature out from StyleResolver into its own class. 4 https://bugs.webkit.org/show_bug.cgi?id=107777 5 6 Reviewed by Dimitri Glazkov. 7 8 Splitting each RuleSet and feature out from StyleResover into its onw class, DocumentRuleSets, 9 to manage them separately. 10 11 This is one of the attempts to try to resolve meta bug (bug 89879) 12 to lose StyleResolver's weight. We need further action to factor 13 StyleResolver to separate it into some classes cleanly. 14 See also https://bugs.webkit.org/show_bug.cgi?id=108890. A following patch will address that. 15 16 No tests. No change in behavior. 17 18 * CMakeLists.txt: 19 * GNUmakefile.list.am: 20 * Target.pri: 21 * WebCore.gypi: 22 * WebCore.xcodeproj/project.pbxproj: 23 * css/CSSAllInOne.cpp: 24 * css/DocumentRuleSets.cpp: Added. 25 (WebCore): 26 (WebCore::DocumentRuleSets::DocumentRuleSets): 27 (WebCore::DocumentRuleSets::~DocumentRuleSets): 28 (WebCore::DocumentRuleSets::initUserStyle): New helper to initialize each RuleSets. 29 (WebCore::DocumentRuleSets::collectRulesFromUserStyleSheets): Factored out from StyleResolver. 30 (WebCore::makeRuleSet): Ditto. 31 (WebCore::DocumentRuleSets::resetAuthorStyle): Ditto. 32 (WebCore::DocumentRuleSets::appendAuthorStyleSheets): Ditto. 33 (WebCore::DocumentRuleSets::collectFeatures): Ditto. 34 (WebCore::DocumentRuleSets::reportMemoryUsage): New methods to report memory usage. Factored out from StyleResolver. 35 * css/DocumentRuleSets.h: Added. 36 (WebCore): 37 (DocumentRuleSets): 38 (WebCore::DocumentRuleSets::authorStyle): Moved from StyleResolver. 39 (WebCore::DocumentRuleSets::userStyle): Ditto. 40 (WebCore::DocumentRuleSets::features): Ditto. 41 (WebCore::DocumentRuleSets::sibling): Ditto. 42 (WebCore::DocumentRuleSets::uncommonAttribute): Ditto. 43 * css/StyleResolver.cpp: 44 (WebCore::StyleResolver::StyleResolver): 45 (WebCore::StyleResolver::appendAuthorStyleSheets): Now calls DocumentRuleSets::appendAuthorStyleSheets. 46 (WebCore::StyleResolver::matchAuthorRules): Use m_ruleSets. 47 (WebCore::StyleResolver::matchUserRules): Ditto. 48 (WebCore::StyleResolver::classNamesAffectedByRules): Ditto. 49 (WebCore::StyleResolver::locateCousinList): Ditto. 50 (WebCore::StyleResolver::canShareStyleWithElement): Ditto. 51 (WebCore::StyleResolver::locateSharedStyle): Ditto. 52 (WebCore::StyleResolver::styleForPage): Ditto. 53 (WebCore::StyleResolver::checkRegionStyle): Ditto. 54 (WebCore::StyleResolver::applyProperty): Ditto. 55 (WebCore::StyleResolver::reportMemoryUsage): Now calls DocumentRuleSets::reportMemoryUsage. 56 * css/StyleResolver.h: 57 (WebCore::StyleResolver::scopeResolver): 58 (StyleResolver): 59 (WebCore::StyleResolver::ruleSets): accessor r to DocumentRuleSets. 60 (WebCore::StyleResolver::usesSiblingRules): Use m_ruleSets. 61 (WebCore::StyleResolver::usesFirstLineRules): Ditto. 62 (WebCore::StyleResolver::usesBeforeAfterRules): Ditto. 63 (WebCore::StyleResolver::hasSelectorForAttribute): Ditto. 64 (WebCore::StyleResolver::hasSelectorForClass): Ditto. 65 (WebCore::StyleResolver::hasSelectorForId): Ditto. 66 * dom/DocumentStyleSheetCollection.cpp: 67 (WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets): 68 1 69 2013-02-05 Julien Chaffraix <jchaffraix@webkit.org> 2 70 -
trunk/Source/WebCore/GNUmakefile.list.am
r141928 r141964 2621 2621 Source/WebCore/css/CSSVariableValue.h \ 2622 2622 Source/WebCore/css/DashboardRegion.h \ 2623 Source/WebCore/css/DocumentRuleSets.cpp \ 2624 Source/WebCore/css/DocumentRuleSets.h \ 2623 2625 Source/WebCore/css/FontFeatureValue.cpp \ 2624 2626 Source/WebCore/css/FontFeatureValue.h \ -
trunk/Source/WebCore/Target.pri
r141928 r141964 308 308 css/CSSValueList.cpp \ 309 309 css/CSSValuePool.cpp \ 310 css/DocumentRuleSets.cpp \ 310 311 css/FontFeatureValue.cpp \ 311 312 css/FontValue.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r141928 r141964 1546 1546 'css/Counter.h', 1547 1547 'css/DashboardRegion.h', 1548 'css/DocumentRuleSets.cpp', 1549 'css/DocumentRuleSets.h', 1548 1550 'css/FontFeatureValue.cpp', 1549 1551 'css/FontFeatureValue.h', -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r141928 r141964 1438 1438 4A38BF5014FE1C0900612512 /* WebSocketDeflateFramer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */; }; 1439 1439 4A38BF5114FE1C0900612512 /* WebSocketDeflateFramer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */; }; 1440 4A4F48A916B0DFC000EDBB29 /* DocumentRuleSets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */; }; 1441 4A4F48AA16B0DFC000EDBB29 /* DocumentRuleSets.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */; }; 1440 1442 4A5A2ADB161E7E00005889DD /* WebSocketExtensionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */; }; 1441 1443 4A5A2ADC161E7E00005889DD /* WebSocketExtensionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */; }; … … 8818 8820 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketDeflateFramer.cpp; path = Modules/websockets/WebSocketDeflateFramer.cpp; sourceTree = "<group>"; }; 8819 8821 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketDeflateFramer.h; path = Modules/websockets/WebSocketDeflateFramer.h; sourceTree = "<group>"; }; 8822 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentRuleSets.cpp; sourceTree = "<group>"; }; 8823 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentRuleSets.h; sourceTree = "<group>"; }; 8820 8824 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketExtensionParser.cpp; path = Modules/websockets/WebSocketExtensionParser.cpp; sourceTree = "<group>"; }; 8821 8825 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketExtensionParser.h; path = Modules/websockets/WebSocketExtensionParser.h; sourceTree = "<group>"; }; … … 21843 21847 CAE9F90E146441F000C245B1 /* CSSVariableValue.h */, 21844 21848 A80E6CE10A1989CA007FB8C5 /* DashboardRegion.h */, 21849 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */, 21850 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */, 21845 21851 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */, 21846 21852 4A6E9FC213C17D1D0046A7F8 /* FontFeatureValue.h */, … … 23419 23425 14947FFE12F80CD200A0F631 /* DocumentOrderedMap.h in Headers */, 23420 23426 BCCFBAE80B5152ED0001F1D7 /* DocumentParser.h in Headers */, 23427 4A4F48AA16B0DFC000EDBB29 /* DocumentRuleSets.h in Headers */, 23421 23428 AD6E71AD1668899D00320C13 /* DocumentSharedObjectPool.h in Headers */, 23422 23429 E47E276516036ED200EE2AFB /* DocumentStyleSheetCollection.h in Headers */, … … 27062 27069 14947FFD12F80CD200A0F631 /* DocumentOrderedMap.cpp in Sources */, 27063 27070 A8C2280E11D4A59700D5A7D3 /* DocumentParser.cpp in Sources */, 27071 4A4F48A916B0DFC000EDBB29 /* DocumentRuleSets.cpp in Sources */, 27064 27072 AD6E71AC1668899D00320C13 /* DocumentSharedObjectPool.cpp in Sources */, 27065 27073 E47E276816036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp in Sources */, -
trunk/Source/WebCore/css/CSSAllInOne.cpp
r141750 r141964 70 70 #include "CSSValueList.cpp" 71 71 #include "CSSValuePool.cpp" 72 #include "DocumentRuleSets.cpp" 72 73 #include "InspectorCSSOMWrappers.cpp" 73 74 #include "RuleFeature.cpp" -
trunk/Source/WebCore/css/StyleResolver.cpp
r141844 r141964 260 260 m_medium = adoptPtr(new MediaQueryEvaluator(view->mediaType(), view->frame(), m_rootDefaultStyle.get())); 261 261 262 resetAuthorStyle();262 m_ruleSets.resetAuthorStyle(); 263 263 264 264 DocumentStyleSheetCollection* styleSheetCollection = document->styleSheetCollection(); 265 OwnPtr<RuleSet> tempUserStyle = RuleSet::create(); 266 if (CSSStyleSheet* pageUserSheet = styleSheetCollection->pageUserSheet()) 267 tempUserStyle->addRulesFromSheet(pageUserSheet->contents(), *m_medium, this); 268 collectRulesFromUserStyleSheets(styleSheetCollection->injectedUserStyleSheets(), *tempUserStyle); 269 collectRulesFromUserStyleSheets(styleSheetCollection->documentUserStyleSheets(), *tempUserStyle); 270 if (tempUserStyle->m_ruleCount > 0 || tempUserStyle->m_pageRules.size() > 0) 271 m_userStyle = tempUserStyle.release(); 265 m_ruleSets.initUserStyle(styleSheetCollection, *m_medium, *this); 272 266 273 267 #if ENABLE(SVG_FONTS) … … 283 277 } 284 278 285 void StyleResolver::collectRulesFromUserStyleSheets(const Vector<RefPtr<CSSStyleSheet> >& userSheets, RuleSet& userStyle)286 {287 for (unsigned i = 0; i < userSheets.size(); ++i) {288 ASSERT(userSheets[i]->contents()->isUserStyleSheet());289 userStyle.addRulesFromSheet(userSheets[i]->contents(), *m_medium, this);290 }291 }292 293 static PassOwnPtr<RuleSet> makeRuleSet(const Vector<RuleFeature>& rules)294 {295 size_t size = rules.size();296 if (!size)297 return nullptr;298 OwnPtr<RuleSet> ruleSet = RuleSet::create();299 for (size_t i = 0; i < size; ++i)300 ruleSet->addRule(rules[i].rule, rules[i].selectorIndex, rules[i].hasDocumentSecurityOrigin ? RuleHasDocumentSecurityOrigin : RuleHasNoSpecialState);301 ruleSet->shrinkToFit();302 return ruleSet.release();303 }304 305 void StyleResolver::resetAuthorStyle()306 {307 m_authorStyle = RuleSet::create();308 m_authorStyle->disableAutoShrinkToFit();309 }310 311 279 void StyleResolver::appendAuthorStyleSheets(unsigned firstNew, const Vector<RefPtr<CSSStyleSheet> >& styleSheets) 312 280 { 313 // This handles sheets added to the end of the stylesheet list only. In other cases the style resolver 314 // needs to be reconstructed. To handle insertions too the rule order numbers would need to be updated. 315 unsigned size = styleSheets.size(); 316 for (unsigned i = firstNew; i < size; ++i) { 317 CSSStyleSheet* cssSheet = styleSheets[i].get(); 318 ASSERT(!cssSheet->disabled()); 319 if (cssSheet->mediaQueries() && !m_medium->eval(cssSheet->mediaQueries(), this)) 320 continue; 321 StyleSheetContents* sheet = cssSheet->contents(); 322 #if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM) 323 if (const ContainerNode* scope = StyleScopeResolver::scopeFor(cssSheet)) { 324 ensureScopeResolver()->ensureRuleSetFor(scope)->addRulesFromSheet(sheet, *m_medium, this, scope); 325 continue; 326 } 327 #endif 328 329 m_authorStyle->addRulesFromSheet(sheet, *m_medium, this); 330 m_inspectorCSSOMWrappers.collectFromStyleSheetIfNeeded(cssSheet); 331 } 332 m_authorStyle->shrinkToFit(); 333 collectFeatures(); 334 281 m_ruleSets.appendAuthorStyleSheets(firstNew, styleSheets, m_medium.get(), m_inspectorCSSOMWrappers, document()->isViewSource(), this); 335 282 if (document()->renderer() && document()->renderer()->style()) 336 283 document()->renderer()->style()->font().update(fontSelector()); … … 640 587 641 588 // Match global author rules. 642 MatchRequest matchRequest(m_ authorStyle.get(), includeEmptyRules);589 MatchRequest matchRequest(m_ruleSets.authorStyle(), includeEmptyRules); 643 590 RuleRange ruleRange = result.ranges.authorRuleRange(); 644 591 collectMatchingRules(matchRequest, ruleRange); … … 651 598 void StyleResolver::matchUserRules(MatchResult& result, bool includeEmptyRules) 652 599 { 653 if (!m_ userStyle)600 if (!m_ruleSets.userStyle()) 654 601 return; 655 602 … … 657 604 658 605 result.ranges.lastUserRule = result.matchedProperties.size() - 1; 659 MatchRequest matchRequest(m_ userStyle.get(), includeEmptyRules);606 MatchRequest matchRequest(m_ruleSets.userStyle(), includeEmptyRules); 660 607 RuleRange ruleRange = result.ranges.userRuleRange(); 661 608 collectMatchingRules(matchRequest, ruleRange); … … 793 740 { 794 741 for (unsigned i = 0; i < classNames.size(); ++i) { 795 if (m_ features.classesInRules.contains(classNames[i].impl()))742 if (m_ruleSets.features().classesInRules.contains(classNames[i].impl())) 796 743 return true; 797 744 } … … 868 815 return 0; 869 816 #endif 870 if (p->hasID() && m_ features.idsInRules.contains(p->idForStyleResolution().impl()))817 if (p->hasID() && m_ruleSets.features().idsInRules.contains(p->idForStyleResolution().impl())) 871 818 return 0; 872 819 … … 1050 997 return false; 1051 998 1052 if (element->hasID() && m_ features.idsInRules.contains(element->idForStyleResolution().impl()))999 if (element->hasID() && m_ruleSets.features().idsInRules.contains(element->idForStyleResolution().impl())) 1053 1000 return false; 1054 1001 if (element->hasScopedHTMLStyleChild()) … … 1133 1080 #endif 1134 1081 // Ids stop style sharing if they show up in the stylesheets. 1135 if (state.styledElement->hasID() && m_ features.idsInRules.contains(state.styledElement->idForStyleResolution().impl()))1082 if (state.styledElement->hasID() && m_ruleSets.features().idsInRules.contains(state.styledElement->idForStyleResolution().impl())) 1136 1083 return 0; 1137 1084 if (parentElementPreventsSharing(state.element->parentElement())) … … 1165 1112 1166 1113 // Can't share if sibling rules apply. This is checked at the end as it should rarely fail. 1167 if (styleSharingCandidateMatchesRuleSet(m_ siblingRuleSet.get()))1114 if (styleSharingCandidateMatchesRuleSet(m_ruleSets.sibling())) 1168 1115 return 0; 1169 1116 // Can't share if attribute rules apply. 1170 if (styleSharingCandidateMatchesRuleSet(m_ uncommonAttributeRuleSet.get()))1117 if (styleSharingCandidateMatchesRuleSet(m_ruleSets.uncommonAttribute())) 1171 1118 return 0; 1172 1119 // Can't share if @host @-rules apply. … … 1437 1384 CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(element, needsCollection); 1438 1385 if (needsCollection) 1439 collectFeatures();1386 m_ruleSets.collectFeatures(document()->isViewSource(), m_scopeResolver.get()); 1440 1387 1441 1388 MatchResult matchResult; … … 1638 1585 MatchResult result; 1639 1586 matchPageRules(result, CSSDefaultStyleSheets::defaultPrintStyle, isLeft, isFirst, page); 1640 matchPageRules(result, m_ userStyle.get(), isLeft, isFirst, page);1587 matchPageRules(result, m_ruleSets.userStyle(), isLeft, isFirst, page); 1641 1588 // Only consider the global author RuleSet for @page rules, as per the HTML5 spec. 1642 matchPageRules(result, m_ authorStyle.get(), isLeft, isFirst, page);1589 matchPageRules(result, m_ruleSets.authorStyle(), isLeft, isFirst, page); 1643 1590 m_state.lineHeightValue = 0; 1644 1591 bool inheritedOnly = false; … … 2010 1957 // so all region rules are global by default. Verify whether that can stand or needs changing. 2011 1958 2012 unsigned rulesSize = m_ authorStyle->m_regionSelectorsAndRuleSets.size();1959 unsigned rulesSize = m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.size(); 2013 1960 for (unsigned i = 0; i < rulesSize; ++i) { 2014 ASSERT(m_ authorStyle->m_regionSelectorsAndRuleSets.at(i).ruleSet.get());2015 if (checkRegionSelector(m_ authorStyle->m_regionSelectorsAndRuleSets.at(i).selector, regionElement))1961 ASSERT(m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.at(i).ruleSet.get()); 1962 if (checkRegionSelector(m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.at(i).selector, regionElement)) 2016 1963 return true; 2017 1964 } 2018 1965 2019 if (m_ userStyle) {2020 rulesSize = m_ userStyle->m_regionSelectorsAndRuleSets.size();1966 if (m_ruleSets.userStyle()) { 1967 rulesSize = m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.size(); 2021 1968 for (unsigned i = 0; i < rulesSize; ++i) { 2022 ASSERT(m_ userStyle->m_regionSelectorsAndRuleSets.at(i).ruleSet.get());2023 if (checkRegionSelector(m_ userStyle->m_regionSelectorsAndRuleSets.at(i).selector, regionElement))1969 ASSERT(m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.at(i).ruleSet.get()); 1970 if (checkRegionSelector(m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.at(i).selector, regionElement)) 2024 1971 return true; 2025 1972 } … … 2885 2832 didSet = true; 2886 2833 // register the fact that the attribute value affects the style 2887 m_ features.attrsInRules.add(attr.localName().impl());2834 m_ruleSets.features().attrsInRules.add(attr.localName().impl()); 2888 2835 } else if (contentValue->isCounter()) { 2889 2836 Counter* counterValue = contentValue->getCounterValue(); … … 5167 5114 } 5168 5115 5169 void StyleResolver::collectFeatures()5170 {5171 m_features.clear();5172 // Collect all ids and rules using sibling selectors (:first-child and similar)5173 // in the current set of stylesheets. Style sharing code uses this information to reject5174 // sharing candidates.5175 if (CSSDefaultStyleSheets::defaultStyle)5176 m_features.add(CSSDefaultStyleSheets::defaultStyle->features());5177 if (m_authorStyle)5178 m_features.add(m_authorStyle->features());5179 if (document()->isViewSource())5180 m_features.add(CSSDefaultStyleSheets::viewSourceStyle()->features());5181 5182 if (m_scopeResolver)5183 m_scopeResolver->collectFeaturesTo(m_features);5184 if (m_userStyle)5185 m_features.add(m_userStyle->features());5186 5187 m_siblingRuleSet = makeRuleSet(m_features.siblingRules);5188 m_uncommonAttributeRuleSet = makeRuleSet(m_features.uncommonAttributeRules);5189 }5190 5191 5116 void StyleResolver::MatchedProperties::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 5192 5117 { … … 5213 5138 { 5214 5139 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CSS); 5215 info.addMember(m_authorStyle, "authorStyle"); 5216 info.addMember(m_userStyle, "userStyle"); 5217 info.addMember(m_features, "features"); 5218 info.addMember(m_siblingRuleSet, "siblingRuleSet"); 5219 info.addMember(m_uncommonAttributeRuleSet, "uncommonAttributeRuleSet"); 5140 info.addMember(m_ruleSets, "ruleSets"); 5220 5141 info.addMember(m_keyframesRuleMap, "keyframesRuleMap"); 5221 5142 info.addMember(m_matchedPropertiesCache, "matchedPropertiesCache"); -
trunk/Source/WebCore/css/StyleResolver.h
r141750 r141964 27 27 #include "CSSToStyleMap.h" 28 28 #include "CSSValueList.h" 29 #include "DocumentRuleSets.h" 29 30 #include "InspectorCSSOMWrappers.h" 30 31 #include "LinkHash.h" … … 170 171 Element* element() const { return m_state.element; } 171 172 Document* document() const { return m_document; } 173 StyleScopeResolver* scopeResolver() const { return m_scopeResolver.get(); } 172 174 const FontDescription& fontDescription() { return style()->fontDescription(); } 173 175 const FontDescription& parentFontDescription() { return parentStyle()->fontDescription(); } … … 180 182 bool hasParentNode() const { return m_state.parentNode; } 181 183 182 void resetAuthorStyle(); 184 // FIXME: It could be better to call m_ruleSets.appendAuthorStyleSheets() directly after we factor StyleRsolver further. 185 // https://bugs.webkit.org/show_bug.cgi?id=108890 183 186 void appendAuthorStyleSheets(unsigned firstNew, const Vector<RefPtr<CSSStyleSheet> >&); 184 187 185 private: 188 DocumentRuleSets& ruleSets() { return m_ruleSets; } 189 const DocumentRuleSets& ruleSets() const { return m_ruleSets; } 190 186 191 #if ENABLE(STYLE_SCOPED) || ENABLE(SHADOW_DOM) 187 192 StyleScopeResolver* ensureScopeResolver() … … 202 207 #endif 203 208 209 private: 204 210 void initForStyleResolve(Element*, RenderStyle* parentStyle = 0, PseudoId = NOPSEUDO); 205 211 void initElement(Element*); 206 void collectFeatures();207 212 RenderStyle* locateSharedStyle(); 208 213 bool styleSharingCandidateMatchesRuleSet(RuleSet*); … … 272 277 bool checkRegionStyle(Element* regionElement); 273 278 274 bool usesSiblingRules() const { return !m_ features.siblingRules.isEmpty(); }275 bool usesFirstLineRules() const { return m_ features.usesFirstLineRules; }276 bool usesBeforeAfterRules() const { return m_ features.usesBeforeAfterRules; }279 bool usesSiblingRules() const { return !m_ruleSets.features().siblingRules.isEmpty(); } 280 bool usesFirstLineRules() const { return m_ruleSets.features().usesFirstLineRules; } 281 bool usesBeforeAfterRules() const { return m_ruleSets.features().usesBeforeAfterRules; } 277 282 278 283 static bool createTransformOperations(CSSValue* inValue, RenderStyle* inStyle, RenderStyle* rootStyle, TransformOperations& outOperations); … … 413 418 String pageName(int pageIndex) const; 414 419 415 OwnPtr<RuleSet> m_authorStyle; 416 OwnPtr<RuleSet> m_userStyle; 417 418 RuleFeatureSet m_features; 419 OwnPtr<RuleSet> m_siblingRuleSet; 420 OwnPtr<RuleSet> m_uncommonAttributeRuleSet; 420 DocumentRuleSets m_ruleSets; 421 421 422 422 typedef HashMap<AtomicStringImpl*, RefPtr<StyleRuleKeyframes> > KeyframesRuleMap; … … 525 525 static RenderStyle* s_styleNotYetAvailable; 526 526 527 void collectRulesFromUserStyleSheets(const Vector<RefPtr<CSSStyleSheet> >&, RuleSet& userStyle);528 529 527 void cacheBorderAndBackground(); 530 528 … … 604 602 { 605 603 ASSERT(!attributeName.isEmpty()); 606 return m_ features.attrsInRules.contains(attributeName.impl());604 return m_ruleSets.features().attrsInRules.contains(attributeName.impl()); 607 605 } 608 606 … … 610 608 { 611 609 ASSERT(!classValue.isEmpty()); 612 return m_ features.classesInRules.contains(classValue.impl());610 return m_ruleSets.features().classesInRules.contains(classValue.impl()); 613 611 } 614 612 … … 616 614 { 617 615 ASSERT(!idValue.isEmpty()); 618 return m_ features.idsInRules.contains(idValue.impl());616 return m_ruleSets.features().idsInRules.contains(idValue.impl()); 619 617 } 620 618 -
trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp
r141570 r141964 479 479 StyleResolver* styleResolver = m_document->styleResolver(); 480 480 if (styleResolverUpdateType == Reset) { 481 styleResolver->r esetAuthorStyle();481 styleResolver->ruleSets().resetAuthorStyle(); 482 482 styleResolver->appendAuthorStyleSheets(0, activeCSSStyleSheets); 483 483 } else {
Note: See TracChangeset
for help on using the changeset viewer.