selectors: Add a MatchingContext::nest function, make nesting_level private.

This commit is contained in:
Emilio Cobos Álvarez 2018-01-19 12:40:17 +01:00
parent 88d2982e23
commit e4f08ee2bb
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 52 additions and 33 deletions

View file

@ -2119,12 +2119,11 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
}
NonTSPseudoClass::MozPlaceholder => false,
NonTSPseudoClass::MozAny(ref sels) => {
context.nesting_level += 1;
let result = sels.iter().any(|s| {
matches_complex_selector(s.iter(), self, context, flags_setter)
});
context.nesting_level -= 1;
result
context.nest(|context| {
sels.iter().any(|s| {
matches_complex_selector(s.iter(), self, context, flags_setter)
})
})
}
NonTSPseudoClass::Lang(ref lang_arg) => {
self.match_element_lang(None, lang_arg)

View file

@ -162,12 +162,11 @@ impl<'a, E> Element for ElementWrapper<'a, E>
#[cfg(feature = "gecko")]
NonTSPseudoClass::MozAny(ref selectors) => {
use selectors::matching::matches_complex_selector;
context.nesting_level += 1;
let result = selectors.iter().any(|s| {
matches_complex_selector(s.iter(), self, context, _setter)
return context.nest(|context| {
selectors.iter().any(|s| {
matches_complex_selector(s.iter(), self, context, _setter)
})
});
context.nesting_level -= 1;
return result
}
// :dir is implemented in terms of state flags, but which state flag