From c384c21cb657ce36edb728576765758e7d566bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sat, 20 Jan 2018 02:26:59 +0100 Subject: [PATCH 1/3] style: Make the MatchingMode in MatchingContext private. It used to be the case that MatchingContext was immutable and thus we didn't care to have accessors. This is no longer true, so let's make this code a bit nicer. --- components/selectors/context.rs | 8 +++++++- components/selectors/matching.rs | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/components/selectors/context.rs b/components/selectors/context.rs index 75abfea9f18..874d782ae88 100644 --- a/components/selectors/context.rs +++ b/components/selectors/context.rs @@ -100,7 +100,7 @@ where Impl: SelectorImpl, { /// 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. pub bloom_filter: Option<&'a BloomFilter>, /// An optional cache to speed up nth-index-like selectors. @@ -194,6 +194,12 @@ where 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 #[inline] pub fn classes_and_ids_case_sensitivity(&self) -> CaseSensitivity { diff --git a/components/selectors/matching.rs b/components/selectors/matching.rs index 6b1fae8cc32..62dcc6b8e72 100644 --- a/components/selectors/matching.rs +++ b/components/selectors/matching.rs @@ -285,7 +285,7 @@ where { // If this is the special pseudo-element mode, consume the ::pseudo-element // 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() { // Consume the pseudo. match *iter.next().unwrap() { @@ -349,7 +349,7 @@ fn matches_hover_and_active_quirk( // This compound selector had a pseudo-element to the right that we // intentionally skipped. if rightmost == Rightmost::Yes && - context.matching_mode == MatchingMode::ForStatelessPseudoElement { + context.matching_mode() == MatchingMode::ForStatelessPseudoElement { return MatchesHoverAndActiveQuirk::No; } From d8455a772f19adc3800cc3a9b9e55b7c4240e111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sat, 20 Jan 2018 02:32:11 +0100 Subject: [PATCH 2/3] style: Remove redundant QuirksMode argument to SelectorMap --- components/style/selector_map.rs | 8 +++++--- components/style/stylist.rs | 7 +------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/components/style/selector_map.rs b/components/style/selector_map.rs index 1ebf5cea6b6..fbef963302e 100644 --- a/components/style/selector_map.rs +++ b/components/style/selector_map.rs @@ -159,7 +159,6 @@ impl SelectorMap { rule_hash_target: E, matching_rules_list: &mut ApplicableDeclarationList, context: &mut MatchingContext, - quirks_mode: QuirksMode, flags_setter: &mut F, cascade_level: CascadeLevel, ) @@ -171,7 +170,10 @@ impl SelectorMap { 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(); if let Some(id) = rule_hash_target.get_id() { if let Some(rules) = self.id_hash.get(&id, quirks_mode) { @@ -247,7 +249,7 @@ impl SelectorMap { pub fn insert( &mut self, entry: T, - quirks_mode: QuirksMode + quirks_mode: QuirksMode, ) -> Result<(), FailedAllocationError> { self.count += 1; diff --git a/components/style/stylist.rs b/components/style/stylist.rs index ec8b738bccd..88689d92890 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -1236,7 +1236,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::UANormal ); @@ -1274,7 +1273,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::UserNormal, ); @@ -1305,7 +1303,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::AuthorNormal ); @@ -1327,7 +1324,7 @@ impl Stylist { // as `context`, write a test-case of :visited not working on // Shadow DOM and fix it! let mut matching_context = MatchingContext::new( - context.matching_mode, + context.matching_mode(), context.bloom_filter, context.nth_index_cache.as_mut().map(|s| &mut **s), stylist.quirks_mode, @@ -1339,7 +1336,6 @@ impl Stylist { rule_hash_target, applicable_declarations, &mut matching_context, - stylist.quirks_mode, flags_setter, CascadeLevel::AuthorNormal, ); @@ -1356,7 +1352,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::AuthorNormal ); From be4c0fecd8f997823850e3968a58e688bb8397bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sat, 20 Jan 2018 02:36:34 +0100 Subject: [PATCH 3/3] style: Indent some function calls properly. --- components/style/selector_map.rs | 56 ++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/components/style/selector_map.rs b/components/style/selector_map.rs index fbef963302e..0678f0ec922 100644 --- a/components/style/selector_map.rs +++ b/components/style/selector_map.rs @@ -177,41 +177,49 @@ impl SelectorMap { let init_len = matching_rules_list.len(); if let Some(id) = rule_hash_target.get_id() { if let Some(rules) = self.id_hash.get(&id, quirks_mode) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } } rule_hash_target.each_class(|class| { if let Some(rules) = self.class_hash.get(&class, quirks_mode) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } }); if let Some(rules) = self.local_name_hash.get(rule_hash_target.get_local_name()) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } - SelectorMap::get_matching_rules(element, - &self.other, - matching_rules_list, - context, - flags_setter, - cascade_level); + SelectorMap::get_matching_rules( + element, + &self.other, + matching_rules_list, + context, + flags_setter, + cascade_level, + ); // Sort only the rules we just added. matching_rules_list[init_len..].sort_unstable_by_key(|block| (block.specificity, block.source_order()));