mirror of
https://github.com/servo/servo.git
synced 2025-06-19 22:59:03 +01:00
style: Convert the visited dependentness of a dependency in a binary enum.
This commit is contained in:
parent
cc31397a2e
commit
cdbb5b56aa
1 changed files with 20 additions and 14 deletions
|
@ -23,6 +23,12 @@ use selectors::parser::{Combinator, Component, Selector};
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq)]
|
||||||
|
enum VisitedDependent {
|
||||||
|
Yes,
|
||||||
|
No,
|
||||||
|
}
|
||||||
|
|
||||||
/// The struct that takes care of encapsulating all the logic on where and how
|
/// The struct that takes care of encapsulating all the logic on where and how
|
||||||
/// element styles need to be invalidated.
|
/// element styles need to be invalidated.
|
||||||
pub struct TreeStyleInvalidator<'a, 'b: 'a, E>
|
pub struct TreeStyleInvalidator<'a, 'b: 'a, E>
|
||||||
|
@ -793,7 +799,7 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
if let Some(ref id) = removed_id {
|
if let Some(ref id) = removed_id {
|
||||||
if let Some(deps) = map.id_to_selector.get(id, quirks_mode) {
|
if let Some(deps) = map.id_to_selector.get(id, quirks_mode) {
|
||||||
for dep in deps {
|
for dep in deps {
|
||||||
self.scan_dependency(dep, false);
|
self.scan_dependency(dep, VisitedDependent::No);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -802,7 +808,7 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
if let Some(ref id) = added_id {
|
if let Some(ref id) = added_id {
|
||||||
if let Some(deps) = map.id_to_selector.get(id, quirks_mode) {
|
if let Some(deps) = map.id_to_selector.get(id, quirks_mode) {
|
||||||
for dep in deps {
|
for dep in deps {
|
||||||
self.scan_dependency(dep, false);
|
self.scan_dependency(dep, VisitedDependent::No);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -810,7 +816,7 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
for class in self.classes_added.iter().chain(self.classes_removed.iter()) {
|
for class in self.classes_added.iter().chain(self.classes_removed.iter()) {
|
||||||
if let Some(deps) = map.class_to_selector.get(class, quirks_mode) {
|
if let Some(deps) = map.class_to_selector.get(class, quirks_mode) {
|
||||||
for dep in deps {
|
for dep in deps {
|
||||||
self.scan_dependency(dep, false);
|
self.scan_dependency(dep, VisitedDependent::No);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -845,10 +851,7 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
self.removed_id,
|
self.removed_id,
|
||||||
self.classes_removed,
|
self.classes_removed,
|
||||||
&mut |dependency| {
|
&mut |dependency| {
|
||||||
self.scan_dependency(
|
self.scan_dependency(dependency, VisitedDependent::No);
|
||||||
dependency,
|
|
||||||
/* is_visited_dependent = */ false
|
|
||||||
);
|
|
||||||
true
|
true
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -868,10 +871,13 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
if !dependency.state.intersects(state_changes) {
|
if !dependency.state.intersects(state_changes) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
self.scan_dependency(
|
let visited_dependent =
|
||||||
&dependency.dep,
|
if dependency.state.intersects(IN_VISITED_OR_UNVISITED_STATE) {
|
||||||
dependency.state.intersects(IN_VISITED_OR_UNVISITED_STATE)
|
VisitedDependent::Yes
|
||||||
);
|
} else {
|
||||||
|
VisitedDependent::No
|
||||||
|
};
|
||||||
|
self.scan_dependency(&dependency.dep, visited_dependent);
|
||||||
true
|
true
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -880,9 +886,9 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
fn scan_dependency(
|
fn scan_dependency(
|
||||||
&mut self,
|
&mut self,
|
||||||
dependency: &Dependency,
|
dependency: &Dependency,
|
||||||
is_visited_dependent: bool
|
is_visited_dependent: VisitedDependent,
|
||||||
) {
|
) {
|
||||||
debug!("TreeStyleInvalidator::scan_dependency({:?}, {:?}, {})",
|
debug!("TreeStyleInvalidator::scan_dependency({:?}, {:?}, {:?})",
|
||||||
self.element,
|
self.element,
|
||||||
dependency,
|
dependency,
|
||||||
is_visited_dependent);
|
is_visited_dependent);
|
||||||
|
@ -949,7 +955,7 @@ impl<'a, 'b: 'a, E> InvalidationCollector<'a, 'b, E>
|
||||||
//
|
//
|
||||||
// NOTE: This thing is actually untested because testing it is flaky,
|
// NOTE: This thing is actually untested because testing it is flaky,
|
||||||
// see the tests that were added and then backed out in bug 1328509.
|
// see the tests that were added and then backed out in bug 1328509.
|
||||||
if is_visited_dependent && now_context.relevant_link_found {
|
if is_visited_dependent == VisitedDependent::Yes && now_context.relevant_link_found {
|
||||||
then_context.visited_handling = VisitedHandlingMode::RelevantLinkVisited;
|
then_context.visited_handling = VisitedHandlingMode::RelevantLinkVisited;
|
||||||
let matched_then =
|
let matched_then =
|
||||||
matches_selector(&dependency.selector,
|
matches_selector(&dependency.selector,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue