forked from mirrors/gecko-dev
Bug 1837818 - Remove special selector-matching case in matches_simple_selector. r=boris
This doesn't regress stylebench. Depends on D180592 Differential Revision: https://phabricator.services.mozilla.com/D180593
This commit is contained in:
parent
8bbb6cadee
commit
caae6da5e7
1 changed files with 1 additions and 33 deletions
|
|
@ -16,7 +16,6 @@ use crate::parser::{
|
||||||
use crate::tree::Element;
|
use crate::tree::Element;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use std::borrow::Borrow;
|
use std::borrow::Borrow;
|
||||||
use std::iter;
|
|
||||||
|
|
||||||
pub use crate::context::*;
|
pub use crate::context::*;
|
||||||
|
|
||||||
|
|
@ -781,42 +780,11 @@ where
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
// Handle some common cases first.
|
|
||||||
// We may want to get rid of this at some point if we can make the
|
|
||||||
// generic case fast enough.
|
|
||||||
let mut selector = selector_iter.next();
|
|
||||||
if let Some(&Component::LocalName(ref local_name)) = selector {
|
|
||||||
if !matches_local_name(element, local_name) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
selector = selector_iter.next();
|
|
||||||
}
|
|
||||||
let class_and_id_case_sensitivity = context.classes_and_ids_case_sensitivity();
|
|
||||||
if let Some(&Component::ID(ref id)) = selector {
|
|
||||||
if !element.has_id(id, class_and_id_case_sensitivity) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
selector = selector_iter.next();
|
|
||||||
}
|
|
||||||
while let Some(&Component::Class(ref class)) = selector {
|
|
||||||
if !element.has_class(class, class_and_id_case_sensitivity) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
selector = selector_iter.next();
|
|
||||||
}
|
|
||||||
let selector = match selector {
|
|
||||||
Some(s) => s,
|
|
||||||
None => return true,
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut local_context = LocalMatchingContext {
|
let mut local_context = LocalMatchingContext {
|
||||||
shared: context,
|
shared: context,
|
||||||
quirks_data,
|
quirks_data,
|
||||||
};
|
};
|
||||||
iter::once(selector)
|
selector_iter.all(|simple| matches_simple_selector(simple, element, &mut local_context))
|
||||||
.chain(selector_iter)
|
|
||||||
.all(|simple| matches_simple_selector(simple, element, &mut local_context))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Determines whether the given element matches the given single selector.
|
/// Determines whether the given element matches the given single selector.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue