Changeset 140643 in webkit
- Timestamp:
- Jan 23, 2013 8:45:17 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r140642 r140643 1 2013-01-23 Hayato Ito <hayato@chromium.org> 2 3 Group parameters (firstRuleIndex and lastRuleIndex) into a parameter object, RuleRange. 4 https://bugs.webkit.org/show_bug.cgi?id=107095 5 6 Reviewed by Darin Adler. 7 8 This is a continued effort after r139817. 9 10 Factoring, no change in behavior. 11 12 * css/StyleResolver.cpp: 13 (WebCore::StyleResolver::collectMatchingRules): 14 (WebCore::StyleResolver::collectMatchingRulesForRegion): 15 (WebCore::StyleResolver::matchScopedAuthorRules): 16 (WebCore::StyleResolver::matchHostRules): 17 (WebCore::StyleResolver::matchAuthorRules): 18 (WebCore::StyleResolver::matchUserRules): 19 (WebCore::StyleResolver::matchUARules): 20 (WebCore::StyleResolver::collectMatchingRulesForList): 21 (WebCore::StyleResolver::styleSharingCandidateMatchesRuleSet): 22 * css/StyleResolver.h: 23 (WebCore::StyleResolver::RuleRange::RuleRange): 24 (RuleRange): Newly introduced to group parameters. 25 (StyleResolver): 26 (WebCore::StyleResolver::MatchRanges::UARuleRange): 27 (WebCore::StyleResolver::MatchRanges::authorRuleRange): 28 (WebCore::StyleResolver::MatchRanges::userRuleRange): 29 1 30 2013-01-23 Luke Macpherson <macpherson@chromium.org> 2 31 -
trunk/Source/WebCore/css/StyleResolver.cpp
r140642 r140643 649 649 bool MatchingUARulesScope::m_matchingUARules = false; 650 650 651 void StyleResolver::collectMatchingRules(const MatchRequest& matchRequest, int& firstRuleIndex, int& lastRuleIndex)651 void StyleResolver::collectMatchingRules(const MatchRequest& matchRequest, RuleRange& ruleRange) 652 652 { 653 653 ASSERT(matchRequest.ruleSet); … … 657 657 if (!pseudoId.isEmpty()) { 658 658 ASSERT(m_styledElement); 659 collectMatchingRulesForList(matchRequest.ruleSet->shadowPseudoElementRules(pseudoId.impl()), matchRequest, firstRuleIndex, lastRuleIndex);659 collectMatchingRulesForList(matchRequest.ruleSet->shadowPseudoElementRules(pseudoId.impl()), matchRequest, ruleRange); 660 660 } 661 661 662 662 #if ENABLE(VIDEO_TRACK) 663 663 if (m_element->isWebVTTElement() && toWebVTTElement(m_element)->webVTTNodeType()) 664 collectMatchingRulesForList(matchRequest.ruleSet->cuePseudoRules(), matchRequest, firstRuleIndex, lastRuleIndex);664 collectMatchingRulesForList(matchRequest.ruleSet->cuePseudoRules(), matchRequest, ruleRange); 665 665 #endif 666 666 // Check whether other types of rules are applicable in the current tree scope. Criteria for this: … … 677 677 // then sort the buffer. 678 678 if (m_element->hasID()) 679 collectMatchingRulesForList(matchRequest.ruleSet->idRules(m_element->idForStyleResolution().impl()), matchRequest, firstRuleIndex, lastRuleIndex);679 collectMatchingRulesForList(matchRequest.ruleSet->idRules(m_element->idForStyleResolution().impl()), matchRequest, ruleRange); 680 680 if (m_styledElement && m_styledElement->hasClass()) { 681 681 for (size_t i = 0; i < m_styledElement->classNames().size(); ++i) 682 collectMatchingRulesForList(matchRequest.ruleSet->classRules(m_styledElement->classNames()[i].impl()), matchRequest, firstRuleIndex, lastRuleIndex);682 collectMatchingRulesForList(matchRequest.ruleSet->classRules(m_styledElement->classNames()[i].impl()), matchRequest, ruleRange); 683 683 } 684 684 685 685 if (m_element->isLink()) 686 collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest, firstRuleIndex, lastRuleIndex);686 collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest, ruleRange); 687 687 if (m_selectorChecker.matchesFocusPseudoClass(m_element)) 688 collectMatchingRulesForList(matchRequest.ruleSet->focusPseudoClassRules(), matchRequest, firstRuleIndex, lastRuleIndex);689 collectMatchingRulesForList(matchRequest.ruleSet->tagRules(m_element->localName().impl()), matchRequest, firstRuleIndex, lastRuleIndex);690 collectMatchingRulesForList(matchRequest.ruleSet->universalRules(), matchRequest, firstRuleIndex, lastRuleIndex);691 } 692 693 void StyleResolver::collectMatchingRulesForRegion(const MatchRequest& matchRequest, int& firstRuleIndex, int& lastRuleIndex)688 collectMatchingRulesForList(matchRequest.ruleSet->focusPseudoClassRules(), matchRequest, ruleRange); 689 collectMatchingRulesForList(matchRequest.ruleSet->tagRules(m_element->localName().impl()), matchRequest, ruleRange); 690 collectMatchingRulesForList(matchRequest.ruleSet->universalRules(), matchRequest, ruleRange); 691 } 692 693 void StyleResolver::collectMatchingRulesForRegion(const MatchRequest& matchRequest, RuleRange& ruleRange) 694 694 { 695 695 if (!m_regionForStyling) … … 702 702 RuleSet* regionRules = matchRequest.ruleSet->m_regionSelectorsAndRuleSets.at(i).ruleSet.get(); 703 703 ASSERT(regionRules); 704 collectMatchingRules(MatchRequest(regionRules, matchRequest.includeEmptyRules, matchRequest.scope), firstRuleIndex, lastRuleIndex);704 collectMatchingRules(MatchRequest(regionRules, matchRequest.includeEmptyRules, matchRequest.scope), ruleRange); 705 705 } 706 706 } … … 756 756 757 757 MatchRequest matchRequest(frame.m_ruleSet, includeEmptyRules, frame.m_scope); 758 collectMatchingRules(matchRequest, result.ranges.firstAuthorRule, result.ranges.lastAuthorRule); 759 collectMatchingRulesForRegion(matchRequest, result.ranges.firstAuthorRule, result.ranges.lastAuthorRule); 758 RuleRange ruleRange = result.ranges.authorRuleRange(); 759 collectMatchingRules(matchRequest, ruleRange); 760 collectMatchingRulesForRegion(matchRequest, ruleRange); 760 761 sortAndTransferMatchedRules(result); 761 762 } … … 791 792 return; 792 793 793 for (unsigned i = matchedRules.size(); i > 0; --i) 794 collectMatchingRules(MatchRequest(matchedRules.at(i-1), includeEmptyRules, m_element), result.ranges.firstAuthorRule, result.ranges.lastAuthorRule); 794 for (unsigned i = matchedRules.size(); i > 0; --i) { 795 RuleRange ruleRange = result.ranges.authorRuleRange(); 796 collectMatchingRules(MatchRequest(matchedRules.at(i-1), includeEmptyRules, m_element), ruleRange); 797 } 795 798 sortAndTransferMatchedRules(result); 796 799 #else … … 810 813 // Match global author rules. 811 814 MatchRequest matchRequest(m_authorStyle.get(), includeEmptyRules); 812 collectMatchingRules(matchRequest, result.ranges.firstAuthorRule, result.ranges.lastAuthorRule); 813 collectMatchingRulesForRegion(matchRequest, result.ranges.firstAuthorRule, result.ranges.lastAuthorRule); 815 RuleRange ruleRange = result.ranges.authorRuleRange(); 816 collectMatchingRules(matchRequest, ruleRange); 817 collectMatchingRulesForRegion(matchRequest, ruleRange); 814 818 sortAndTransferMatchedRules(result); 815 819 … … 826 830 result.ranges.lastUserRule = result.matchedProperties.size() - 1; 827 831 MatchRequest matchRequest(m_userStyle.get(), includeEmptyRules); 828 collectMatchingRules(matchRequest, result.ranges.firstUserRule, result.ranges.lastUserRule); 829 collectMatchingRulesForRegion(matchRequest, result.ranges.firstUserRule, result.ranges.lastUserRule); 832 RuleRange ruleRange = result.ranges.userRuleRange(); 833 collectMatchingRules(matchRequest, ruleRange); 834 collectMatchingRulesForRegion(matchRequest, ruleRange); 830 835 831 836 sortAndTransferMatchedRules(result); … … 837 842 838 843 result.ranges.lastUARule = result.matchedProperties.size() - 1; 839 collectMatchingRules(MatchRequest(rules), result.ranges.firstUARule, result.ranges.lastUARule); 844 RuleRange ruleRange = result.ranges.UARuleRange(); 845 collectMatchingRules(MatchRequest(rules), ruleRange); 840 846 841 847 sortAndTransferMatchedRules(result); 842 848 } 843 849 844 void StyleResolver::collectMatchingRulesForList(const Vector<RuleData>* rules, const MatchRequest& matchRequest, int& firstRuleIndex, int& lastRuleIndex)850 void StyleResolver::collectMatchingRulesForList(const Vector<RuleData>* rules, const MatchRequest& matchRequest, RuleRange& ruleRange) 845 851 { 846 852 if (!rules) … … 882 888 } else { 883 889 // Update our first/last rule indices in the matched rules array. 884 ++ lastRuleIndex;885 if ( firstRuleIndex == -1)886 firstRuleIndex =lastRuleIndex;890 ++ruleRange.lastRuleIndex; 891 if (ruleRange.firstRuleIndex == -1) 892 ruleRange.firstRuleIndex = ruleRange.lastRuleIndex; 887 893 888 894 // Add this rule to our list of matched rules. … … 1061 1067 m_matchedRules.clear(); 1062 1068 1069 m_selectorChecker.setMode(SelectorChecker::SharingRules); 1063 1070 int firstRuleIndex = -1, lastRuleIndex = -1; 1064 m_selectorChecker.setMode(SelectorChecker::SharingRules);1065 collectMatchingRules(MatchRequest(ruleSet), firstRuleIndex, lastRuleIndex);1071 RuleRange ruleRange(firstRuleIndex, lastRuleIndex); 1072 collectMatchingRules(MatchRequest(ruleSet), ruleRange); 1066 1073 m_selectorChecker.setMode(SelectorChecker::ResolvingStyle); 1067 1074 if (m_matchedRules.isEmpty()) -
trunk/Source/WebCore/css/StyleResolver.h
r140530 r140643 311 311 void addMatchedRule(const RuleData* rule) { m_matchedRules.append(rule); } 312 312 313 struct RuleRange { 314 RuleRange(int& firstRuleIndex, int& lastRuleIndex): firstRuleIndex(firstRuleIndex), lastRuleIndex(lastRuleIndex) { } 315 int& firstRuleIndex; 316 int& lastRuleIndex; 317 }; 318 313 319 struct MatchRanges { 314 320 MatchRanges() : firstUARule(-1), lastUARule(-1), firstAuthorRule(-1), lastAuthorRule(-1), firstUserRule(-1), lastUserRule(-1) { } … … 319 325 int firstUserRule; 320 326 int lastUserRule; 327 RuleRange UARuleRange() { return RuleRange(firstUARule, lastUARule); } 328 RuleRange authorRuleRange() { return RuleRange(firstAuthorRule, lastAuthorRule); } 329 RuleRange userRuleRange() { return RuleRange(firstUserRule, lastUserRule); } 321 330 }; 322 331 … … 365 374 void matchHostRules(MatchResult&, bool includeEmptyRules); 366 375 367 void collectMatchingRules(const MatchRequest&, int& firstRuleIndex, int& lastRuleIndex);368 void collectMatchingRulesForRegion(const MatchRequest&, int& firstRuleIndex, int& lastRuleIndex);369 void collectMatchingRulesForList(const Vector<RuleData>*, const MatchRequest&, int& firstRuleIndex, int& lastRuleIndex);376 void collectMatchingRules(const MatchRequest&, RuleRange&); 377 void collectMatchingRulesForRegion(const MatchRequest&, RuleRange&); 378 void collectMatchingRulesForList(const Vector<RuleData>*, const MatchRequest&, RuleRange&); 370 379 371 380 bool fastRejectSelector(const RuleData&) const;
Note: See TracChangeset
for help on using the changeset viewer.