Changeset 140643 in webkit


Ignore:
Timestamp:
Jan 23, 2013 8:45:17 PM (11 years ago)
Author:
hayato@chromium.org
Message:

Group parameters (firstRuleIndex and lastRuleIndex) into a parameter object, RuleRange.
https://bugs.webkit.org/show_bug.cgi?id=107095

Reviewed by Darin Adler.

This is a continued effort after r139817.

Factoring, no change in behavior.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::collectMatchingRules):
(WebCore::StyleResolver::collectMatchingRulesForRegion):
(WebCore::StyleResolver::matchScopedAuthorRules):
(WebCore::StyleResolver::matchHostRules):
(WebCore::StyleResolver::matchAuthorRules):
(WebCore::StyleResolver::matchUserRules):
(WebCore::StyleResolver::matchUARules):
(WebCore::StyleResolver::collectMatchingRulesForList):
(WebCore::StyleResolver::styleSharingCandidateMatchesRuleSet):

  • css/StyleResolver.h:

(WebCore::StyleResolver::RuleRange::RuleRange):
(RuleRange): Newly introduced to group parameters.
(StyleResolver):
(WebCore::StyleResolver::MatchRanges::UARuleRange):
(WebCore::StyleResolver::MatchRanges::authorRuleRange):
(WebCore::StyleResolver::MatchRanges::userRuleRange):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r140642 r140643  
     12013-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
    1302013-01-23  Luke Macpherson   <macpherson@chromium.org>
    231
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r140642 r140643  
    649649bool MatchingUARulesScope::m_matchingUARules = false;
    650650
    651 void StyleResolver::collectMatchingRules(const MatchRequest& matchRequest, int& firstRuleIndex, int& lastRuleIndex)
     651void StyleResolver::collectMatchingRules(const MatchRequest& matchRequest, RuleRange& ruleRange)
    652652{
    653653    ASSERT(matchRequest.ruleSet);
     
    657657    if (!pseudoId.isEmpty()) {
    658658        ASSERT(m_styledElement);
    659         collectMatchingRulesForList(matchRequest.ruleSet->shadowPseudoElementRules(pseudoId.impl()), matchRequest, firstRuleIndex, lastRuleIndex);
     659        collectMatchingRulesForList(matchRequest.ruleSet->shadowPseudoElementRules(pseudoId.impl()), matchRequest, ruleRange);
    660660    }
    661661
    662662#if ENABLE(VIDEO_TRACK)
    663663    if (m_element->isWebVTTElement() && toWebVTTElement(m_element)->webVTTNodeType())
    664         collectMatchingRulesForList(matchRequest.ruleSet->cuePseudoRules(), matchRequest, firstRuleIndex, lastRuleIndex);
     664        collectMatchingRulesForList(matchRequest.ruleSet->cuePseudoRules(), matchRequest, ruleRange);
    665665#endif
    666666    // Check whether other types of rules are applicable in the current tree scope. Criteria for this:
     
    677677    // then sort the buffer.
    678678    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);
    680680    if (m_styledElement && m_styledElement->hasClass()) {
    681681        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);
    683683    }
    684684
    685685    if (m_element->isLink())
    686         collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest, firstRuleIndex, lastRuleIndex);
     686        collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest, ruleRange);
    687687    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
     693void StyleResolver::collectMatchingRulesForRegion(const MatchRequest& matchRequest, RuleRange& ruleRange)
    694694{
    695695    if (!m_regionForStyling)
     
    702702            RuleSet* regionRules = matchRequest.ruleSet->m_regionSelectorsAndRuleSets.at(i).ruleSet.get();
    703703            ASSERT(regionRules);
    704             collectMatchingRules(MatchRequest(regionRules, matchRequest.includeEmptyRules, matchRequest.scope), firstRuleIndex, lastRuleIndex);
     704            collectMatchingRules(MatchRequest(regionRules, matchRequest.includeEmptyRules, matchRequest.scope), ruleRange);
    705705        }
    706706    }
     
    756756
    757757            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);
    760761            sortAndTransferMatchedRules(result);
    761762        }
     
    791792        return;
    792793
    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    }
    795798    sortAndTransferMatchedRules(result);
    796799#else
     
    810813    // Match global author rules.
    811814    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);
    814818    sortAndTransferMatchedRules(result);
    815819
     
    826830    result.ranges.lastUserRule = result.matchedProperties.size() - 1;
    827831    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);
    830835
    831836    sortAndTransferMatchedRules(result);
     
    837842   
    838843    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);
    840846
    841847    sortAndTransferMatchedRules(result);
    842848}
    843849
    844 void StyleResolver::collectMatchingRulesForList(const Vector<RuleData>* rules, const MatchRequest& matchRequest, int& firstRuleIndex, int& lastRuleIndex)
     850void StyleResolver::collectMatchingRulesForList(const Vector<RuleData>* rules, const MatchRequest& matchRequest, RuleRange& ruleRange)
    845851{
    846852    if (!rules)
     
    882888            } else {
    883889                // 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;
    887893
    888894                // Add this rule to our list of matched rules.
     
    10611067    m_matchedRules.clear();
    10621068
     1069    m_selectorChecker.setMode(SelectorChecker::SharingRules);
    10631070    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);
    10661073    m_selectorChecker.setMode(SelectorChecker::ResolvingStyle);
    10671074    if (m_matchedRules.isEmpty())
  • trunk/Source/WebCore/css/StyleResolver.h

    r140530 r140643  
    311311    void addMatchedRule(const RuleData* rule) { m_matchedRules.append(rule); }
    312312
     313    struct RuleRange {
     314        RuleRange(int& firstRuleIndex, int& lastRuleIndex): firstRuleIndex(firstRuleIndex), lastRuleIndex(lastRuleIndex) { }
     315        int& firstRuleIndex;
     316        int& lastRuleIndex;
     317    };
     318
    313319    struct MatchRanges {
    314320        MatchRanges() : firstUARule(-1), lastUARule(-1), firstAuthorRule(-1), lastAuthorRule(-1), firstUserRule(-1), lastUserRule(-1) { }
     
    319325        int firstUserRule;
    320326        int lastUserRule;
     327        RuleRange UARuleRange() { return RuleRange(firstUARule, lastUARule); }
     328        RuleRange authorRuleRange() { return RuleRange(firstAuthorRule, lastAuthorRule); }
     329        RuleRange userRuleRange() { return RuleRange(firstUserRule, lastUserRule); }
    321330    };
    322331
     
    365374    void matchHostRules(MatchResult&, bool includeEmptyRules);
    366375
    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&);
    370379
    371380    bool fastRejectSelector(const RuleData&) const;
Note: See TracChangeset for help on using the changeset viewer.