Changeset 251289 in webkit
- Timestamp:
- Oct 18, 2019 11:08:43 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r251285 r251289 1 2019-10-18 Antti Koivisto <antti@apple.com> 2 3 ElementRuleCollector function signature cleanups 4 https://bugs.webkit.org/show_bug.cgi?id=203153 5 6 Reviewed by Zalan Bujtas. 7 8 Many functions in ElementRuleCollector take repetitive arguments that can be removed: 9 10 - Make includeEmptyRules argument a class member 11 - Remove RuleRange argument, update the ranges in rule transfer step. 12 13 * css/ElementRuleCollector.cpp: 14 (WebCore::MatchRequest::MatchRequest): 15 (WebCore::ElementRuleCollector::addMatchedRule): 16 (WebCore::ElementRuleCollector::collectMatchingRules): 17 (WebCore::ElementRuleCollector::sortAndTransferMatchedRules): 18 (WebCore::ElementRuleCollector::transferMatchedRules): 19 (WebCore::ElementRuleCollector::matchAuthorRules): 20 (WebCore::ElementRuleCollector::matchesAnyAuthorRules): 21 (WebCore::ElementRuleCollector::collectMatchingAuthorRules): 22 (WebCore::ElementRuleCollector::matchAuthorShadowPseudoElementRules): 23 (WebCore::ElementRuleCollector::matchHostPseudoClassRules): 24 (WebCore::ElementRuleCollector::matchSlottedPseudoElementRules): 25 (WebCore::ElementRuleCollector::matchPartPseudoElementRules): 26 (WebCore::ElementRuleCollector::matchPartPseudoElementRulesForScope): 27 (WebCore::ElementRuleCollector::collectMatchingShadowPseudoElementRules): 28 (WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot): 29 (WebCore::ElementRuleCollector::matchUserRules): 30 (WebCore::ElementRuleCollector::matchUARules): 31 (WebCore::ElementRuleCollector::collectMatchingRulesForList): 32 (WebCore::ElementRuleCollector::matchAllRules): 33 (WebCore::ElementRuleCollector::hasAnyMatchingRules): 34 * css/ElementRuleCollector.h: 35 (WebCore::ElementRuleCollector::setIncludeEmptyRules): 36 (WebCore::ElementRuleCollector::transferMatchedRules): 37 38 Range update happens now here based on the supplied argument. 39 40 * css/StyleResolver.cpp: 41 (WebCore::StyleResolver::pseudoStyleForElement): 42 (WebCore::StyleResolver::pseudoStyleRulesForElement): 43 x 1 44 2019-10-18 Antti Koivisto <antti@apple.com> 2 45 -
trunk/Source/WebCore/css/ElementRuleCollector.cpp
r251285 r251289 69 69 class MatchRequest { 70 70 public: 71 MatchRequest(const RuleSet* ruleSet, bool includeEmptyRules = false,Style::ScopeOrdinal styleScopeOrdinal = Style::ScopeOrdinal::Element)71 MatchRequest(const RuleSet* ruleSet, Style::ScopeOrdinal styleScopeOrdinal = Style::ScopeOrdinal::Element) 72 72 : ruleSet(ruleSet) 73 , includeEmptyRules(includeEmptyRules)74 73 , styleScopeOrdinal(styleScopeOrdinal) 75 74 { 76 75 } 77 76 const RuleSet* ruleSet; 78 const bool includeEmptyRules;79 77 Style::ScopeOrdinal styleScopeOrdinal; 80 78 }; … … 110 108 } 111 109 112 inline void ElementRuleCollector::addMatchedRule(const RuleData& ruleData, unsigned specificity, Style::ScopeOrdinal styleScopeOrdinal, StyleResolver::RuleRange& ruleRange) 113 { 114 // Update our first/last rule indices in the matched rules array. 115 if (ruleRange.lastRuleIndex != -1) 116 ++ruleRange.lastRuleIndex; 117 else { 118 ruleRange.lastRuleIndex = m_result.matchedProperties().size(); 119 ruleRange.firstRuleIndex = ruleRange.lastRuleIndex; 120 } 121 110 inline void ElementRuleCollector::addMatchedRule(const RuleData& ruleData, unsigned specificity, Style::ScopeOrdinal styleScopeOrdinal) 111 { 122 112 m_matchedRules.append({ &ruleData, specificity, styleScopeOrdinal }); 123 113 } … … 147 137 } 148 138 149 void ElementRuleCollector::collectMatchingRules(const MatchRequest& matchRequest , StyleResolver::RuleRange& ruleRange)139 void ElementRuleCollector::collectMatchingRules(const MatchRequest& matchRequest) 150 140 { 151 141 ASSERT(matchRequest.ruleSet); … … 154 144 auto* shadowRoot = element().containingShadowRoot(); 155 145 if (shadowRoot && shadowRoot->mode() == ShadowRootMode::UserAgent) 156 collectMatchingShadowPseudoElementRules(matchRequest , ruleRange);146 collectMatchingShadowPseudoElementRules(matchRequest); 157 147 158 148 // We need to collect the rules for id, class, tag, and everything else into a buffer and … … 160 150 auto& id = element().idForStyleResolution(); 161 151 if (!id.isNull()) 162 collectMatchingRulesForList(matchRequest.ruleSet->idRules(id), matchRequest , ruleRange);152 collectMatchingRulesForList(matchRequest.ruleSet->idRules(id), matchRequest); 163 153 if (element().hasClass()) { 164 154 for (size_t i = 0; i < element().classNames().size(); ++i) 165 collectMatchingRulesForList(matchRequest.ruleSet->classRules(element().classNames()[i]), matchRequest , ruleRange);155 collectMatchingRulesForList(matchRequest.ruleSet->classRules(element().classNames()[i]), matchRequest); 166 156 } 167 157 168 158 if (element().isLink()) 169 collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest , ruleRange);159 collectMatchingRulesForList(matchRequest.ruleSet->linkPseudoClassRules(), matchRequest); 170 160 if (SelectorChecker::matchesFocusPseudoClass(element())) 171 collectMatchingRulesForList(matchRequest.ruleSet->focusPseudoClassRules(), matchRequest , ruleRange);172 collectMatchingRulesForList(matchRequest.ruleSet->tagRules(element().localName(), element().isHTMLElement() && element().document().isHTMLDocument()), matchRequest , ruleRange);173 collectMatchingRulesForList(matchRequest.ruleSet->universalRules(), matchRequest , ruleRange);174 } 175 176 void ElementRuleCollector::sortAndTransferMatchedRules( )161 collectMatchingRulesForList(matchRequest.ruleSet->focusPseudoClassRules(), matchRequest); 162 collectMatchingRulesForList(matchRequest.ruleSet->tagRules(element().localName(), element().isHTMLElement() && element().document().isHTMLDocument()), matchRequest); 163 collectMatchingRulesForList(matchRequest.ruleSet->universalRules(), matchRequest); 164 } 165 166 void ElementRuleCollector::sortAndTransferMatchedRules(DeclarationOrigin declarationOrigin) 177 167 { 178 168 if (m_matchedRules.isEmpty()) … … 181 171 sortMatchedRules(); 182 172 183 transferMatchedRules(); 184 } 185 186 void ElementRuleCollector::transferMatchedRules(Optional<Style::ScopeOrdinal> fromScope) 187 { 173 transferMatchedRules(declarationOrigin); 174 } 175 176 void ElementRuleCollector::transferMatchedRules(DeclarationOrigin declarationOrigin, Optional<Style::ScopeOrdinal> fromScope) 177 { 178 if (m_matchedRules.size() <= m_matchedRuleTransferIndex) 179 return; 180 181 auto rangeForDeclarationOrigin = [&]() { 182 switch (declarationOrigin) { 183 case DeclarationOrigin::UserAgent: return m_result.ranges.UARuleRange(); 184 case DeclarationOrigin::Author: return m_result.ranges.authorRuleRange(); 185 case DeclarationOrigin::User: return m_result.ranges.userRuleRange(); 186 } 187 }(); 188 189 // FIXME: Range updating should be done by MatchResults type 190 // FIXME: MatchResults shouldn't be in StyleResolver namespace. 191 bool updateRanges = m_mode != SelectorChecker::Mode::CollectingRules; 192 if (updateRanges && rangeForDeclarationOrigin.firstRuleIndex == -1) 193 rangeForDeclarationOrigin.firstRuleIndex = m_result.matchedRules.size(); 194 188 195 for (; m_matchedRuleTransferIndex < m_matchedRules.size(); ++m_matchedRuleTransferIndex) { 189 196 auto& matchedRule = m_matchedRules[m_matchedRuleTransferIndex]; … … 198 205 m_result.addMatchedProperties(matchedRule.ruleData->rule()->properties(), matchedRule.ruleData->rule(), matchedRule.ruleData->linkMatchType(), matchedRule.ruleData->propertyWhitelistType(), matchedRule.styleScopeOrdinal); 199 206 } 200 } 201 202 void ElementRuleCollector::matchAuthorRules(bool includeEmptyRules) 207 208 if (updateRanges) 209 rangeForDeclarationOrigin.lastRuleIndex = m_result.matchedRules.size() - 1; 210 } 211 212 void ElementRuleCollector::matchAuthorRules() 203 213 { 204 214 clearMatchedRules(); 205 215 206 collectMatchingAuthorRules( includeEmptyRules);207 208 sortAndTransferMatchedRules( );216 collectMatchingAuthorRules(); 217 218 sortAndTransferMatchedRules(DeclarationOrigin::Author); 209 219 } 210 220 … … 214 224 215 225 // FIXME: This should bail out on first match. 216 collectMatchingAuthorRules( false);226 collectMatchingAuthorRules(); 217 227 218 228 return !m_matchedRules.isEmpty(); 219 229 } 220 230 221 void ElementRuleCollector::collectMatchingAuthorRules(bool includeEmptyRules) 222 { 223 StyleResolver::RuleRange ruleRange = m_result.ranges.authorRuleRange(); 224 231 void ElementRuleCollector::collectMatchingAuthorRules() 232 { 225 233 { 226 MatchRequest matchRequest(&m_authorStyle , includeEmptyRules);227 collectMatchingRules(matchRequest , ruleRange);234 MatchRequest matchRequest(&m_authorStyle); 235 collectMatchingRules(matchRequest); 228 236 } 229 237 230 238 auto* parent = element().parentElement(); 231 239 if (parent && parent->shadowRoot()) 232 matchSlottedPseudoElementRules( includeEmptyRules, ruleRange);240 matchSlottedPseudoElementRules(); 233 241 234 242 if (element().shadowRoot()) 235 matchHostPseudoClassRules( includeEmptyRules, ruleRange);243 matchHostPseudoClassRules(); 236 244 237 245 if (element().isInShadowTree()) { 238 matchAuthorShadowPseudoElementRules( includeEmptyRules, ruleRange);239 matchPartPseudoElementRules( includeEmptyRules, ruleRange);240 } 241 } 242 243 void ElementRuleCollector::matchAuthorShadowPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange& ruleRange)246 matchAuthorShadowPseudoElementRules(); 247 matchPartPseudoElementRules(); 248 } 249 } 250 251 void ElementRuleCollector::matchAuthorShadowPseudoElementRules() 244 252 { 245 253 ASSERT(element().isInShadowTree()); … … 249 257 // Look up shadow pseudo elements also from the host scope author style as they are web-exposed. 250 258 auto& hostAuthorRules = Style::Scope::forNode(*shadowRoot.host()).resolver().ruleSets().authorStyle(); 251 MatchRequest hostAuthorRequest { &hostAuthorRules, includeEmptyRules,Style::ScopeOrdinal::ContainingHost };252 collectMatchingShadowPseudoElementRules(hostAuthorRequest , ruleRange);253 } 254 255 void ElementRuleCollector::matchHostPseudoClassRules( bool includeEmptyRules, StyleResolver::RuleRange& ruleRange)259 MatchRequest hostAuthorRequest { &hostAuthorRules, Style::ScopeOrdinal::ContainingHost }; 260 collectMatchingShadowPseudoElementRules(hostAuthorRequest); 261 } 262 263 void ElementRuleCollector::matchHostPseudoClassRules() 256 264 { 257 265 ASSERT(element().shadowRoot()); … … 264 272 SetForScope<bool> change(m_isMatchingHostPseudoClass, true); 265 273 266 MatchRequest hostMatchRequest { nullptr, includeEmptyRules,Style::ScopeOrdinal::Shadow };267 collectMatchingRulesForList(&shadowHostRules, hostMatchRequest , ruleRange);268 } 269 270 void ElementRuleCollector::matchSlottedPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange& ruleRange)274 MatchRequest hostMatchRequest { nullptr, Style::ScopeOrdinal::Shadow }; 275 collectMatchingRulesForList(&shadowHostRules, hostMatchRequest); 276 } 277 278 void ElementRuleCollector::matchSlottedPseudoElementRules() 271 279 { 272 280 auto* slot = element().assignedSlot(); … … 280 288 // FIXME: This is really part of the slot style and could be cached when resolving it. 281 289 ElementRuleCollector collector(*slot, styleScope.resolver().ruleSets().authorStyle(), nullptr); 282 auto slottedPseudoElementRules = collector.collectSlottedPseudoElementRulesForSlot( includeEmptyRules);290 auto slottedPseudoElementRules = collector.collectSlottedPseudoElementRulesForSlot(); 283 291 if (!slottedPseudoElementRules) 284 292 continue; … … 286 294 SetForScope<bool> change(m_isMatchingSlottedPseudoElements, true); 287 295 288 MatchRequest scopeMatchRequest(nullptr, includeEmptyRules,styleScopeOrdinal);289 collectMatchingRulesForList(slottedPseudoElementRules.get(), scopeMatchRequest , ruleRange);296 MatchRequest scopeMatchRequest(nullptr, styleScopeOrdinal); 297 collectMatchingRulesForList(slottedPseudoElementRules.get(), scopeMatchRequest); 290 298 291 299 m_keepAliveSlottedPseudoElementRules.append(WTFMove(slottedPseudoElementRules)); … … 293 301 } 294 302 295 void ElementRuleCollector::matchPartPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange& ruleRange)303 void ElementRuleCollector::matchPartPseudoElementRules() 296 304 { 297 305 ASSERT(element().isInShadowTree()); … … 303 311 return; 304 312 305 matchPartPseudoElementRulesForScope(*partMatchingElement.containingShadowRoot() , includeEmptyRules, ruleRange);306 } 307 308 void ElementRuleCollector::matchPartPseudoElementRulesForScope(const ShadowRoot& scopeShadowRoot , bool includeEmptyRules, StyleResolver::RuleRange& ruleRange)313 matchPartPseudoElementRulesForScope(*partMatchingElement.containingShadowRoot()); 314 } 315 316 void ElementRuleCollector::matchPartPseudoElementRulesForScope(const ShadowRoot& scopeShadowRoot) 309 317 { 310 318 auto& shadowHost = *scopeShadowRoot.host(); … … 313 321 314 322 auto& hostAuthorRules = Style::Scope::forNode(shadowHost).resolver().ruleSets().authorStyle(); 315 MatchRequest hostAuthorRequest { &hostAuthorRules, includeEmptyRules,Style::ScopeOrdinal::ContainingHost };316 collectMatchingRulesForList(&hostAuthorRules.partPseudoElementRules(), hostAuthorRequest , ruleRange);323 MatchRequest hostAuthorRequest { &hostAuthorRules, Style::ScopeOrdinal::ContainingHost }; 324 collectMatchingRulesForList(&hostAuthorRules.partPseudoElementRules(), hostAuthorRequest); 317 325 } 318 326 … … 322 330 323 331 if (auto* parentScopeShadowRoot = shadowHost.containingShadowRoot()) 324 matchPartPseudoElementRulesForScope(*parentScopeShadowRoot , includeEmptyRules, ruleRange);325 } 326 327 void ElementRuleCollector::collectMatchingShadowPseudoElementRules(const MatchRequest& matchRequest , StyleResolver::RuleRange& ruleRange)332 matchPartPseudoElementRulesForScope(*parentScopeShadowRoot); 333 } 334 335 void ElementRuleCollector::collectMatchingShadowPseudoElementRules(const MatchRequest& matchRequest) 328 336 { 329 337 ASSERT(matchRequest.ruleSet); … … 334 342 // FXIME: WebVTT should not be done by styling UA shadow trees like this. 335 343 if (element().isWebVTTElement()) 336 collectMatchingRulesForList(rules.cuePseudoRules(), matchRequest , ruleRange);344 collectMatchingRulesForList(rules.cuePseudoRules(), matchRequest); 337 345 #endif 338 346 auto& pseudoId = element().shadowPseudoId(); 339 347 if (!pseudoId.isEmpty()) 340 collectMatchingRulesForList(rules.shadowPseudoElementRules(pseudoId), matchRequest , ruleRange);341 } 342 343 std::unique_ptr<RuleSet::RuleDataVector> ElementRuleCollector::collectSlottedPseudoElementRulesForSlot( bool includeEmptyRules)348 collectMatchingRulesForList(rules.shadowPseudoElementRules(pseudoId), matchRequest); 349 } 350 351 std::unique_ptr<RuleSet::RuleDataVector> ElementRuleCollector::collectSlottedPseudoElementRulesForSlot() 344 352 { 345 353 ASSERT(is<HTMLSlotElement>(element())); … … 350 358 351 359 // Match global author rules. 352 MatchRequest matchRequest(&m_authorStyle, includeEmptyRules); 353 StyleResolver::RuleRange ruleRange = m_result.ranges.authorRuleRange(); 354 collectMatchingRulesForList(&m_authorStyle.slottedPseudoElementRules(), matchRequest, ruleRange); 360 MatchRequest matchRequest(&m_authorStyle); 361 collectMatchingRulesForList(&m_authorStyle.slottedPseudoElementRules(), matchRequest); 355 362 356 363 if (m_matchedRules.isEmpty()) … … 365 372 } 366 373 367 void ElementRuleCollector::matchUserRules( bool includeEmptyRules)374 void ElementRuleCollector::matchUserRules() 368 375 { 369 376 if (!m_userStyle) … … 372 379 clearMatchedRules(); 373 380 374 MatchRequest matchRequest(m_userStyle, includeEmptyRules); 375 StyleResolver::RuleRange ruleRange = m_result.ranges.userRuleRange(); 376 collectMatchingRules(matchRequest, ruleRange); 377 378 sortAndTransferMatchedRules(); 381 MatchRequest matchRequest(m_userStyle); 382 collectMatchingRules(matchRequest); 383 384 sortAndTransferMatchedRules(DeclarationOrigin::User); 379 385 } 380 386 … … 400 406 clearMatchedRules(); 401 407 402 StyleResolver::RuleRange ruleRange = m_result.ranges.UARuleRange(); 403 collectMatchingRules(MatchRequest(&rules), ruleRange); 404 405 sortAndTransferMatchedRules(); 408 collectMatchingRules(MatchRequest(&rules)); 409 410 sortAndTransferMatchedRules(DeclarationOrigin::UserAgent); 406 411 } 407 412 … … 515 520 } 516 521 517 void ElementRuleCollector::collectMatchingRulesForList(const RuleSet::RuleDataVector* rules, const MatchRequest& matchRequest , StyleResolver::RuleRange& ruleRange)522 void ElementRuleCollector::collectMatchingRulesForList(const RuleSet::RuleDataVector* rules, const MatchRequest& matchRequest) 518 523 { 519 524 if (!rules) … … 535 540 // and that means we always have to consider it. 536 541 const StyleProperties* properties = rule->propertiesWithoutDeferredParsing(); 537 if (properties && properties->isEmpty() && !m atchRequest.includeEmptyRules)542 if (properties && properties->isEmpty() && !m_shouldIncludeEmptyRules) 538 543 continue; 539 544 540 545 unsigned specificity; 541 546 if (ruleMatches(ruleData, specificity)) 542 addMatchedRule(ruleData, specificity, matchRequest.styleScopeOrdinal , ruleRange);547 addMatchedRule(ruleData, specificity, matchRequest.styleScopeOrdinal); 543 548 } 544 549 } … … 567 572 // Now we check user sheet rules. 568 573 if (matchAuthorAndUserStyles) 569 matchUserRules( false);574 matchUserRules(); 570 575 571 576 // Now check author rules, beginning first with presentational attributes mapped from HTML. … … 590 595 clearMatchedRules(); 591 596 592 collectMatchingAuthorRules( false);597 collectMatchingAuthorRules(); 593 598 sortMatchedRules(); 594 599 595 transferMatchedRules( Style::ScopeOrdinal::Element);600 transferMatchedRules(DeclarationOrigin::Author, Style::ScopeOrdinal::Element); 596 601 597 602 // Inline style behaves as if it has higher specificity than any rule. … … 599 604 600 605 // Rules from the host scope override inline style. 601 transferMatchedRules( Style::ScopeOrdinal::ContainingHost);606 transferMatchedRules(DeclarationOrigin::Author, Style::ScopeOrdinal::ContainingHost); 602 607 } 603 608 } … … 623 628 624 629 m_mode = SelectorChecker::Mode::CollectingRulesIgnoringVirtualPseudoElements; 625 int firstRuleIndex = -1, lastRuleIndex = -1; 626 StyleResolver::RuleRange ruleRange(firstRuleIndex, lastRuleIndex); 627 collectMatchingRules(MatchRequest(ruleSet), ruleRange); 630 collectMatchingRules(MatchRequest(ruleSet)); 628 631 629 632 return !m_matchedRules.isEmpty(); -
trunk/Source/WebCore/css/ElementRuleCollector.h
r251285 r251289 48 48 ElementRuleCollector(const Element&, const RuleSet& authorStyle, const SelectorFilter*); 49 49 50 void setIncludeEmptyRules(bool value) { m_shouldIncludeEmptyRules = value; } 51 50 52 void matchAllRules(bool matchAuthorAndUserStyles, bool includeSMILProperties); 51 53 void matchUARules(); 52 void matchAuthorRules( bool includeEmptyRules);53 void matchUserRules( bool includeEmptyRules);54 void matchAuthorRules(); 55 void matchUserRules(); 54 56 55 57 bool matchesAnyAuthorRules(); … … 75 77 void matchUARules(const RuleSet&); 76 78 77 void collectMatchingAuthorRules( bool includeEmptyRules);79 void collectMatchingAuthorRules(); 78 80 void addElementInlineStyleProperties(bool includeSMILProperties); 79 81 80 void matchAuthorShadowPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange&);81 void matchHostPseudoClassRules( bool includeEmptyRules, StyleResolver::RuleRange&);82 void matchSlottedPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange&);83 void matchPartPseudoElementRules( bool includeEmptyRules, StyleResolver::RuleRange&);84 void matchPartPseudoElementRulesForScope(const ShadowRoot& scopeShadowRoot , bool includeEmptyRules, StyleResolver::RuleRange&);82 void matchAuthorShadowPseudoElementRules(); 83 void matchHostPseudoClassRules(); 84 void matchSlottedPseudoElementRules(); 85 void matchPartPseudoElementRules(); 86 void matchPartPseudoElementRulesForScope(const ShadowRoot& scopeShadowRoot); 85 87 86 void collectMatchingShadowPseudoElementRules(const MatchRequest& , StyleResolver::RuleRange&);87 std::unique_ptr<RuleSet::RuleDataVector> collectSlottedPseudoElementRulesForSlot( bool includeEmptyRules);88 void collectMatchingShadowPseudoElementRules(const MatchRequest&); 89 std::unique_ptr<RuleSet::RuleDataVector> collectSlottedPseudoElementRulesForSlot(); 88 90 89 void collectMatchingRules(const MatchRequest& , StyleResolver::RuleRange&);90 void collectMatchingRulesForList(const RuleSet::RuleDataVector*, const MatchRequest& , StyleResolver::RuleRange&);91 void collectMatchingRules(const MatchRequest&); 92 void collectMatchingRulesForList(const RuleSet::RuleDataVector*, const MatchRequest&); 91 93 bool ruleMatches(const RuleData&, unsigned &specificity); 92 94 93 95 void sortMatchedRules(); 94 void sortAndTransferMatchedRules();95 void transferMatchedRules(Optional<Style::ScopeOrdinal> forScope = { });96 96 97 void addMatchedRule(const RuleData&, unsigned specificity, Style::ScopeOrdinal, StyleResolver::RuleRange&); 97 enum class DeclarationOrigin { UserAgent, Author, User }; 98 void sortAndTransferMatchedRules(DeclarationOrigin); 99 void transferMatchedRules(DeclarationOrigin, Optional<Style::ScopeOrdinal> forScope = { }); 100 101 void addMatchedRule(const RuleData&, unsigned specificity, Style::ScopeOrdinal); 98 102 99 103 const Element& element() const { return m_element.get(); } … … 105 109 const SelectorFilter* m_selectorFilter { nullptr }; 106 110 111 bool m_shouldIncludeEmptyRules { false }; 107 112 bool m_isPrintStyle { false }; 108 113 PseudoStyleRequest m_pseudoStyleRequest { PseudoId::None }; -
trunk/Source/WebCore/css/StyleResolver.cpp
r251285 r251289 585 585 586 586 if (m_matchAuthorAndUserStyles) { 587 collector.matchUserRules( false);588 collector.matchAuthorRules( false);587 collector.matchUserRules(); 588 collector.matchAuthorRules(); 589 589 } 590 590 … … 1258 1258 collector.setPseudoStyleRequest(PseudoStyleRequest(pseudoId)); 1259 1259 collector.setMedium(&m_mediaQueryEvaluator); 1260 collector.setIncludeEmptyRules(rulesToInclude & EmptyCSSRules); 1260 1261 1261 1262 if (rulesToInclude & UAAndUserCSSRules) { … … 1265 1266 // Now we check user sheet rules. 1266 1267 if (m_matchAuthorAndUserStyles) 1267 collector.matchUserRules( rulesToInclude & EmptyCSSRules);1268 collector.matchUserRules(); 1268 1269 } 1269 1270 1270 1271 if (m_matchAuthorAndUserStyles && (rulesToInclude & AuthorCSSRules)) 1271 collector.matchAuthorRules( rulesToInclude & EmptyCSSRules);1272 collector.matchAuthorRules(); 1272 1273 1273 1274 return collector.matchedRuleList();
Note: See TracChangeset
for help on using the changeset viewer.