servo: Merge #19429 - Don't try to share style on quirks mode whenever two elements have different id (from upsuper:sharing-quirks-id); r=emilio

This fixes [bug 1420946](https://bugzilla.mozilla.org/show_bug.cgi?id=1420946).

Source-Repo: https://github.com/servo/servo
Source-Revision: fce44a2e139478a5fc3524c2fd72fbeea6e3eec1

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : c90308252a2d4f0d49388aa6210514f88144d61c
This commit is contained in:
Xidorn Quan 2017-11-30 08:23:07 -06:00
Родитель 12fa858f4f
Коммит a96c0d5b96
1 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -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) {