mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
Update selectors to 0.11
This brings :not() with proper list of complex selectors as argument.
This commit is contained in:
parent
609d47b44f
commit
1c4cc6c703
13 changed files with 60 additions and 60 deletions
|
@ -38,7 +38,7 @@ num-traits = "0.1.32"
|
|||
ordered-float = "0.2.2"
|
||||
rand = "0.3"
|
||||
rustc-serialize = "0.3"
|
||||
selectors = "0.10.1"
|
||||
selectors = "0.11"
|
||||
serde = {version = "0.8", optional = true}
|
||||
serde_macros = {version = "0.8", optional = true}
|
||||
smallvec = "0.1"
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
use element_state::*;
|
||||
use selector_impl::{ElementExt, TheSelectorImpl, NonTSPseudoClass, AttrValue};
|
||||
use selectors::matching::StyleRelations;
|
||||
use selectors::matching::matches_compound_selector;
|
||||
use selectors::parser::{AttrSelector, Combinator, CompoundSelector, SimpleSelector, SelectorImpl};
|
||||
use selectors::matching::matches_complex_selector;
|
||||
use selectors::parser::{AttrSelector, Combinator, ComplexSelector, SimpleSelector, SelectorImpl};
|
||||
use selectors::{Element, MatchAttr};
|
||||
use std::clone::Clone;
|
||||
use std::sync::Arc;
|
||||
|
@ -333,7 +333,7 @@ impl Sensitivities {
|
|||
#[derive(Debug)]
|
||||
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
|
||||
struct Dependency {
|
||||
selector: Arc<CompoundSelector<TheSelectorImpl>>,
|
||||
selector: Arc<ComplexSelector<TheSelectorImpl>>,
|
||||
combinator: Option<Combinator>,
|
||||
sensitivities: Sensitivities,
|
||||
}
|
||||
|
@ -353,12 +353,12 @@ impl DependencySet {
|
|||
self.deps.len()
|
||||
}
|
||||
|
||||
pub fn note_selector(&mut self, selector: &Arc<CompoundSelector<TheSelectorImpl>>) {
|
||||
pub fn note_selector(&mut self, selector: &Arc<ComplexSelector<TheSelectorImpl>>) {
|
||||
let mut cur = selector;
|
||||
let mut combinator: Option<Combinator> = None;
|
||||
loop {
|
||||
let mut sensitivities = Sensitivities::new();
|
||||
for s in &cur.simple_selectors {
|
||||
for s in &cur.compound_selector {
|
||||
sensitivities.states.insert(selector_to_state(s));
|
||||
if !sensitivities.attrs {
|
||||
sensitivities.attrs = is_attr_selector(s);
|
||||
|
@ -404,9 +404,9 @@ impl DependencySet {
|
|||
if state_changes.intersects(dep.sensitivities.states) || (attrs_changed && dep.sensitivities.attrs) {
|
||||
let old_el: ElementWrapper<E> = ElementWrapper::new_with_snapshot(el.clone(), snapshot);
|
||||
let matched_then =
|
||||
matches_compound_selector(&*dep.selector, &old_el, None, &mut StyleRelations::empty());
|
||||
matches_complex_selector(&*dep.selector, &old_el, None, &mut StyleRelations::empty());
|
||||
let matches_now =
|
||||
matches_compound_selector(&*dep.selector, el, None, &mut StyleRelations::empty());
|
||||
matches_complex_selector(&*dep.selector, el, None, &mut StyleRelations::empty());
|
||||
if matched_then != matches_now {
|
||||
hint.insert(combinator_to_restyle_hint(dep.combinator));
|
||||
if hint.is_all() {
|
||||
|
|
|
@ -175,7 +175,7 @@ impl Stylist {
|
|||
};
|
||||
|
||||
map.$priority.insert(Rule {
|
||||
selector: selector.compound_selectors.clone(),
|
||||
selector: selector.complex_selector.clone(),
|
||||
declarations: DeclarationBlock {
|
||||
specificity: selector.specificity,
|
||||
declarations: $style_rule.declarations.$priority.clone(),
|
||||
|
@ -195,7 +195,7 @@ impl Stylist {
|
|||
rules_source_order += 1;
|
||||
|
||||
for selector in &style_rule.selectors {
|
||||
self.state_deps.note_selector(&selector.compound_selectors);
|
||||
self.state_deps.note_selector(&selector.complex_selector);
|
||||
if selector.affects_siblings() {
|
||||
self.sibling_affecting_selectors.push(selector.clone());
|
||||
}
|
||||
|
@ -452,20 +452,20 @@ impl Stylist {
|
|||
where E: ElementExt
|
||||
{
|
||||
use selectors::matching::StyleRelations;
|
||||
use selectors::matching::matches_compound_selector;
|
||||
use selectors::matching::matches_complex_selector;
|
||||
// XXX we can probably do better, the candidate should already know what
|
||||
// rules it matches.
|
||||
//
|
||||
// XXX Could the bloom filter help here? Should be available.
|
||||
for ref selector in self.non_common_style_affecting_attributes_selectors.iter() {
|
||||
let element_matches = matches_compound_selector(&selector.compound_selectors,
|
||||
element,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
let candidate_matches = matches_compound_selector(&selector.compound_selectors,
|
||||
candidate,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
let element_matches = matches_complex_selector(&selector.complex_selector,
|
||||
element,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
let candidate_matches = matches_complex_selector(&selector.complex_selector,
|
||||
candidate,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
|
||||
if element_matches != candidate_matches {
|
||||
return false;
|
||||
|
@ -481,25 +481,25 @@ impl Stylist {
|
|||
where E: ElementExt
|
||||
{
|
||||
use selectors::matching::StyleRelations;
|
||||
use selectors::matching::matches_compound_selector;
|
||||
use selectors::matching::matches_complex_selector;
|
||||
// XXX we can probably do better, the candidate should already know what
|
||||
// rules it matches.
|
||||
//
|
||||
// XXX The bloom filter would help here, and should be available.
|
||||
for ref selector in self.sibling_affecting_selectors.iter() {
|
||||
let element_matches = matches_compound_selector(&selector.compound_selectors,
|
||||
element,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
let element_matches = matches_complex_selector(&selector.complex_selector,
|
||||
element,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
|
||||
let candidate_matches = matches_compound_selector(&selector.compound_selectors,
|
||||
candidate,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
let candidate_matches = matches_complex_selector(&selector.complex_selector,
|
||||
candidate,
|
||||
None,
|
||||
&mut StyleRelations::empty());
|
||||
|
||||
if element_matches != candidate_matches {
|
||||
debug!("match_same_sibling_affecting_rules: Failure due to {:?}",
|
||||
selector.compound_selectors);
|
||||
selector.complex_selector);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue