From af8026a98c45398ea6e22fd01cac8881128e0fee Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 29 Nov 2017 19:37:03 -0600 Subject: [PATCH] Don't try to share style on quirks mode whenever two elements have different id --- components/style/stylist.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/components/style/stylist.rs b/components/style/stylist.rs index a9ac4e9ab9d..1e5e7b39b68 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -26,7 +26,7 @@ use rule_tree::{CascadeLevel, RuleTree, StrongRuleNode, StyleSource}; use selector_map::{PrecomputedHashMap, SelectorMap, SelectorMapEntry}; use selector_parser::{SelectorImpl, PerPseudoElementMap, PseudoElement}; use selectors::NthIndexCache; -use selectors::attr::NamespaceConstraint; +use selectors::attr::{CaseSensitivity, NamespaceConstraint}; use selectors::bloom::{BloomFilter, NonCountingBloomFilter}; use selectors::matching::{ElementSelectorFlags, matches_selector, MatchingContext, MatchingMode}; use selectors::matching::VisitedHandlingMode; @@ -1405,6 +1405,13 @@ impl Stylist { where E: TElement, { + // If id needs to be compared case-insensitively, the logic below + // wouldn't work. Just conservatively assume it may have such rules. + match self.quirks_mode().classes_and_ids_case_sensitivity() { + CaseSensitivity::AsciiCaseInsensitive => return true, + CaseSensitivity::CaseSensitive => {} + } + let hash = id.get_hash(); for (data, _) in self.cascade_data.iter_origins() { if data.mapped_ids.might_contain_hash(hash) {