mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Further changes required by Servo
This commit is contained in:
parent
e23a8bf0ad
commit
b5dcb5c961
3 changed files with 14 additions and 3 deletions
|
@ -488,12 +488,18 @@ where
|
|||
Component::Class(ref class) if quirks_mode != QuirksMode::Quirks => {
|
||||
class.precomputed_hash()
|
||||
},
|
||||
Component::AttributeInNoNamespace { ref local_name, .. } if Impl::should_collect_attr_hash(local_name) => {
|
||||
Component::AttributeInNoNamespace { ref local_name, .. }
|
||||
if Impl::should_collect_attr_hash(local_name) =>
|
||||
{
|
||||
// AttributeInNoNamespace is only used when local_name ==
|
||||
// local_name_lower.
|
||||
local_name.precomputed_hash()
|
||||
},
|
||||
Component::AttributeInNoNamespaceExists { ref local_name, ref local_name_lower, .. } => {
|
||||
Component::AttributeInNoNamespaceExists {
|
||||
ref local_name,
|
||||
ref local_name_lower,
|
||||
..
|
||||
} => {
|
||||
// Only insert the local-name into the filter if it's all
|
||||
// lowercase. Otherwise we would need to test both hashes, and
|
||||
// our data structures aren't really set up for that.
|
||||
|
@ -503,7 +509,9 @@ where
|
|||
local_name.precomputed_hash()
|
||||
},
|
||||
Component::AttributeOther(ref selector) => {
|
||||
if selector.local_name != selector.local_name_lower || !Impl::should_collect_attr_hash(&selector.local_name) {
|
||||
if selector.local_name != selector.local_name_lower ||
|
||||
!Impl::should_collect_attr_hash(&selector.local_name)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
selector.local_name.precomputed_hash()
|
||||
|
|
|
@ -107,6 +107,7 @@ impl<E: TElement> PushedElement<E> {
|
|||
/// We do this for attributes that are very common but not commonly used in
|
||||
/// selectors.
|
||||
#[inline]
|
||||
#[cfg(feature = "gecko")]
|
||||
pub fn is_attr_name_excluded_from_filter(atom: &crate::Atom) -> bool {
|
||||
*atom == atom!("class") || *atom == atom!("id") || *atom == atom!("style")
|
||||
}
|
||||
|
@ -125,6 +126,7 @@ where
|
|||
|
||||
element.each_class(|class| f(class.get_hash()));
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
if static_prefs::pref!("layout.css.bloom-filter-attribute-names.enabled") {
|
||||
element.each_attr_name(|name| {
|
||||
if !is_attr_name_excluded_from_filter(name) {
|
||||
|
|
|
@ -520,6 +520,7 @@ pub trait TElement:
|
|||
}
|
||||
|
||||
/// Internal iterator for the attribute names of this element.
|
||||
#[cfg(feature = "gecko")]
|
||||
fn each_attr_name<F>(&self, callback: F)
|
||||
where
|
||||
F: FnMut(&AtomIdent);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue