diff --git a/components/style/stylist.rs b/components/style/stylist.rs index 5147b284495..1cf306d123d 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -1226,7 +1226,10 @@ impl Stylist { debug!("Determining if style is shareable: pseudo: {}", pseudo_element.is_some()); - let only_default_rules = rule_inclusion == RuleInclusion::DefaultOnly; + let only_default_rules = + rule_inclusion == RuleInclusion::DefaultOnly; + let matches_user_and_author_rules = + rule_hash_target.matches_user_and_author_rules(); // Step 1: Normal user-agent rules. if let Some(map) = self.cascade_data.user_agent.cascade_data.borrow_for_pseudo(pseudo_element) { @@ -1265,7 +1268,7 @@ impl Stylist { // rule_hash_target.matches_user_and_author_rules()) // // Which may be more what you would probably expect. - if rule_hash_target.matches_user_and_author_rules() { + if matches_user_and_author_rules { // Step 3a: User normal rules. if let Some(map) = self.cascade_data.user.borrow_for_pseudo(pseudo_element) { map.get_all_matching_rules( @@ -1309,24 +1312,20 @@ impl Stylist { } }); - if rule_hash_target.matches_user_and_author_rules() && !only_default_rules { - // Gecko skips author normal rules if cutting off inheritance. - // See nsStyleSet::FileRules(). - if !cut_off_inheritance { - // Step 3c: Author normal rules. - if let Some(map) = self.cascade_data.author.borrow_for_pseudo(pseudo_element) { - map.get_all_matching_rules( - element, - &rule_hash_target, - applicable_declarations, - context, - self.quirks_mode, - flags_setter, - CascadeLevel::AuthorNormal - ); - } - } else { - debug!("skipping author normal rules due to cut off inheritance"); + if matches_user_and_author_rules && !only_default_rules && + !cut_off_inheritance + { + // Step 3c: Author normal rules. + if let Some(map) = self.cascade_data.author.borrow_for_pseudo(pseudo_element) { + map.get_all_matching_rules( + element, + &rule_hash_target, + applicable_declarations, + context, + self.quirks_mode, + flags_setter, + CascadeLevel::AuthorNormal + ); } } else { debug!("skipping author normal rules");