Pre-compute classes and IDs case-sensitivity

This commit is contained in:
Simon Sapin 2017-06-13 00:36:12 +02:00
parent 9316c41bf7
commit b82713924c
2 changed files with 11 additions and 2 deletions

View file

@ -99,6 +99,7 @@ pub struct MatchingContext<'a> {
pub relevant_link_found: bool,
quirks_mode: QuirksMode,
classes_and_ids_case_sensitivity: CaseSensitivity,
}
impl<'a> MatchingContext<'a> {
@ -115,6 +116,7 @@ impl<'a> MatchingContext<'a> {
visited_handling: VisitedHandlingMode::AllLinksUnvisited,
relevant_link_found: false,
quirks_mode: quirks_mode,
classes_and_ids_case_sensitivity: quirks_mode.classes_and_ids_case_sensitivity(),
}
}
@ -132,6 +134,7 @@ impl<'a> MatchingContext<'a> {
visited_handling: visited_handling,
relevant_link_found: false,
quirks_mode: quirks_mode,
classes_and_ids_case_sensitivity: quirks_mode.classes_and_ids_case_sensitivity(),
}
}
@ -140,4 +143,10 @@ impl<'a> MatchingContext<'a> {
pub fn quirks_mode(&self) -> QuirksMode {
self.quirks_mode
}
/// The case-sensitivity for class and ID selectors
#[inline]
pub fn classes_and_ids_case_sensitivity(&self) -> CaseSensitivity {
self.classes_and_ids_case_sensitivity
}
}

View file

@ -549,10 +549,10 @@ fn matches_simple_selector<E, F>(
element.get_namespace() == ns.borrow()
}
Component::ID(ref id) => {
element.has_id(id, context.shared.quirks_mode().classes_and_ids_case_sensitivity())
element.has_id(id, context.shared.classes_and_ids_case_sensitivity())
}
Component::Class(ref class) => {
element.has_class(class, context.shared.quirks_mode().classes_and_ids_case_sensitivity())
element.has_class(class, context.shared.classes_and_ids_case_sensitivity())
}
Component::AttributeInNoNamespaceExists { ref local_name, ref local_name_lower } => {
let is_html = element.is_html_element_in_html_document();