style: Convert the visited dependentness of a dependency in a binary enum.

This commit is contained in:
Emilio Cobos Álvarez 2017-09-05 19:38:05 +02:00
parent cc31397a2e
commit cdbb5b56aa
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -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,