mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Auto merge of #19822 - emilio:less-match-public, r=KiChjang
style: More tiny selector-matching cleanup See each commit individually. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19822) <!-- Reviewable:end -->
This commit is contained in:
commit
6fc71a7644
4 changed files with 47 additions and 36 deletions
|
@ -100,7 +100,7 @@ where
|
||||||
Impl: SelectorImpl,
|
Impl: SelectorImpl,
|
||||||
{
|
{
|
||||||
/// Input with the matching mode we should use when matching selectors.
|
/// Input with the matching mode we should use when matching selectors.
|
||||||
pub matching_mode: MatchingMode,
|
matching_mode: MatchingMode,
|
||||||
/// Input with the bloom filter used to fast-reject selectors.
|
/// Input with the bloom filter used to fast-reject selectors.
|
||||||
pub bloom_filter: Option<&'a BloomFilter>,
|
pub bloom_filter: Option<&'a BloomFilter>,
|
||||||
/// An optional cache to speed up nth-index-like selectors.
|
/// An optional cache to speed up nth-index-like selectors.
|
||||||
|
@ -204,6 +204,12 @@ where
|
||||||
self.quirks_mode
|
self.quirks_mode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The matching-mode for this selector-matching operation.
|
||||||
|
#[inline]
|
||||||
|
pub fn matching_mode(&self) -> MatchingMode {
|
||||||
|
self.matching_mode
|
||||||
|
}
|
||||||
|
|
||||||
/// The case-sensitivity for class and ID selectors
|
/// The case-sensitivity for class and ID selectors
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn classes_and_ids_case_sensitivity(&self) -> CaseSensitivity {
|
pub fn classes_and_ids_case_sensitivity(&self) -> CaseSensitivity {
|
||||||
|
|
|
@ -285,7 +285,7 @@ where
|
||||||
{
|
{
|
||||||
// If this is the special pseudo-element mode, consume the ::pseudo-element
|
// If this is the special pseudo-element mode, consume the ::pseudo-element
|
||||||
// before proceeding, since the caller has already handled that part.
|
// before proceeding, since the caller has already handled that part.
|
||||||
if context.matching_mode == MatchingMode::ForStatelessPseudoElement &&
|
if context.matching_mode() == MatchingMode::ForStatelessPseudoElement &&
|
||||||
!context.is_nested() {
|
!context.is_nested() {
|
||||||
// Consume the pseudo.
|
// Consume the pseudo.
|
||||||
match *iter.next().unwrap() {
|
match *iter.next().unwrap() {
|
||||||
|
@ -349,7 +349,7 @@ fn matches_hover_and_active_quirk<Impl: SelectorImpl>(
|
||||||
// This compound selector had a pseudo-element to the right that we
|
// This compound selector had a pseudo-element to the right that we
|
||||||
// intentionally skipped.
|
// intentionally skipped.
|
||||||
if rightmost == Rightmost::Yes &&
|
if rightmost == Rightmost::Yes &&
|
||||||
context.matching_mode == MatchingMode::ForStatelessPseudoElement {
|
context.matching_mode() == MatchingMode::ForStatelessPseudoElement {
|
||||||
return MatchesHoverAndActiveQuirk::No;
|
return MatchesHoverAndActiveQuirk::No;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,6 @@ impl SelectorMap<Rule> {
|
||||||
rule_hash_target: E,
|
rule_hash_target: E,
|
||||||
matching_rules_list: &mut ApplicableDeclarationList,
|
matching_rules_list: &mut ApplicableDeclarationList,
|
||||||
context: &mut MatchingContext<E::Impl>,
|
context: &mut MatchingContext<E::Impl>,
|
||||||
quirks_mode: QuirksMode,
|
|
||||||
flags_setter: &mut F,
|
flags_setter: &mut F,
|
||||||
cascade_level: CascadeLevel,
|
cascade_level: CascadeLevel,
|
||||||
)
|
)
|
||||||
|
@ -171,45 +170,56 @@ impl SelectorMap<Rule> {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// At the end, we're going to sort the rules that we added, so remember where we began.
|
let quirks_mode = context.quirks_mode();
|
||||||
|
|
||||||
|
// At the end, we're going to sort the rules that we added, so remember
|
||||||
|
// where we began.
|
||||||
let init_len = matching_rules_list.len();
|
let init_len = matching_rules_list.len();
|
||||||
if let Some(id) = rule_hash_target.get_id() {
|
if let Some(id) = rule_hash_target.get_id() {
|
||||||
if let Some(rules) = self.id_hash.get(&id, quirks_mode) {
|
if let Some(rules) = self.id_hash.get(&id, quirks_mode) {
|
||||||
SelectorMap::get_matching_rules(element,
|
SelectorMap::get_matching_rules(
|
||||||
rules,
|
element,
|
||||||
matching_rules_list,
|
rules,
|
||||||
context,
|
matching_rules_list,
|
||||||
flags_setter,
|
context,
|
||||||
cascade_level)
|
flags_setter,
|
||||||
|
cascade_level,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rule_hash_target.each_class(|class| {
|
rule_hash_target.each_class(|class| {
|
||||||
if let Some(rules) = self.class_hash.get(&class, quirks_mode) {
|
if let Some(rules) = self.class_hash.get(&class, quirks_mode) {
|
||||||
SelectorMap::get_matching_rules(element,
|
SelectorMap::get_matching_rules(
|
||||||
rules,
|
element,
|
||||||
matching_rules_list,
|
rules,
|
||||||
context,
|
matching_rules_list,
|
||||||
flags_setter,
|
context,
|
||||||
cascade_level)
|
flags_setter,
|
||||||
|
cascade_level,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Some(rules) = self.local_name_hash.get(rule_hash_target.get_local_name()) {
|
if let Some(rules) = self.local_name_hash.get(rule_hash_target.get_local_name()) {
|
||||||
SelectorMap::get_matching_rules(element,
|
SelectorMap::get_matching_rules(
|
||||||
rules,
|
element,
|
||||||
matching_rules_list,
|
rules,
|
||||||
context,
|
matching_rules_list,
|
||||||
flags_setter,
|
context,
|
||||||
cascade_level)
|
flags_setter,
|
||||||
|
cascade_level,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectorMap::get_matching_rules(element,
|
SelectorMap::get_matching_rules(
|
||||||
&self.other,
|
element,
|
||||||
matching_rules_list,
|
&self.other,
|
||||||
context,
|
matching_rules_list,
|
||||||
flags_setter,
|
context,
|
||||||
cascade_level);
|
flags_setter,
|
||||||
|
cascade_level,
|
||||||
|
);
|
||||||
|
|
||||||
// Sort only the rules we just added.
|
// Sort only the rules we just added.
|
||||||
matching_rules_list[init_len..].sort_unstable_by_key(|block| (block.specificity, block.source_order()));
|
matching_rules_list[init_len..].sort_unstable_by_key(|block| (block.specificity, block.source_order()));
|
||||||
|
@ -247,7 +257,7 @@ impl<T: SelectorMapEntry> SelectorMap<T> {
|
||||||
pub fn insert(
|
pub fn insert(
|
||||||
&mut self,
|
&mut self,
|
||||||
entry: T,
|
entry: T,
|
||||||
quirks_mode: QuirksMode
|
quirks_mode: QuirksMode,
|
||||||
) -> Result<(), FailedAllocationError> {
|
) -> Result<(), FailedAllocationError> {
|
||||||
self.count += 1;
|
self.count += 1;
|
||||||
|
|
||||||
|
|
|
@ -1236,7 +1236,6 @@ impl Stylist {
|
||||||
rule_hash_target,
|
rule_hash_target,
|
||||||
applicable_declarations,
|
applicable_declarations,
|
||||||
context,
|
context,
|
||||||
self.quirks_mode,
|
|
||||||
flags_setter,
|
flags_setter,
|
||||||
CascadeLevel::UANormal
|
CascadeLevel::UANormal
|
||||||
);
|
);
|
||||||
|
@ -1274,7 +1273,6 @@ impl Stylist {
|
||||||
rule_hash_target,
|
rule_hash_target,
|
||||||
applicable_declarations,
|
applicable_declarations,
|
||||||
context,
|
context,
|
||||||
self.quirks_mode,
|
|
||||||
flags_setter,
|
flags_setter,
|
||||||
CascadeLevel::UserNormal,
|
CascadeLevel::UserNormal,
|
||||||
);
|
);
|
||||||
|
@ -1305,7 +1303,6 @@ impl Stylist {
|
||||||
rule_hash_target,
|
rule_hash_target,
|
||||||
applicable_declarations,
|
applicable_declarations,
|
||||||
context,
|
context,
|
||||||
self.quirks_mode,
|
|
||||||
flags_setter,
|
flags_setter,
|
||||||
CascadeLevel::AuthorNormal
|
CascadeLevel::AuthorNormal
|
||||||
);
|
);
|
||||||
|
@ -1327,7 +1324,7 @@ impl Stylist {
|
||||||
// as `context`, write a test-case of :visited not working on
|
// as `context`, write a test-case of :visited not working on
|
||||||
// Shadow DOM and fix it!
|
// Shadow DOM and fix it!
|
||||||
let mut matching_context = MatchingContext::new(
|
let mut matching_context = MatchingContext::new(
|
||||||
context.matching_mode,
|
context.matching_mode(),
|
||||||
context.bloom_filter,
|
context.bloom_filter,
|
||||||
context.nth_index_cache.as_mut().map(|s| &mut **s),
|
context.nth_index_cache.as_mut().map(|s| &mut **s),
|
||||||
stylist.quirks_mode,
|
stylist.quirks_mode,
|
||||||
|
@ -1339,7 +1336,6 @@ impl Stylist {
|
||||||
rule_hash_target,
|
rule_hash_target,
|
||||||
applicable_declarations,
|
applicable_declarations,
|
||||||
&mut matching_context,
|
&mut matching_context,
|
||||||
stylist.quirks_mode,
|
|
||||||
flags_setter,
|
flags_setter,
|
||||||
CascadeLevel::AuthorNormal,
|
CascadeLevel::AuthorNormal,
|
||||||
);
|
);
|
||||||
|
@ -1356,7 +1352,6 @@ impl Stylist {
|
||||||
rule_hash_target,
|
rule_hash_target,
|
||||||
applicable_declarations,
|
applicable_declarations,
|
||||||
context,
|
context,
|
||||||
self.quirks_mode,
|
|
||||||
flags_setter,
|
flags_setter,
|
||||||
CascadeLevel::AuthorNormal
|
CascadeLevel::AuthorNormal
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue