style: Don't look at user and author rules if the element can't be affected by them.

Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
Emilio Cobos Álvarez 2017-10-21 18:55:27 +02:00
parent 1b32709d95
commit bd2a82334b
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
2 changed files with 15 additions and 8 deletions

View file

@ -22,6 +22,7 @@ use selectors::attr::CaseSensitivity;
use selectors::matching::{MatchingContext, MatchingMode, VisitedHandlingMode}; use selectors::matching::{MatchingContext, MatchingMode, VisitedHandlingMode};
use selectors::matching::matches_selector; use selectors::matching::matches_selector;
use smallvec::SmallVec; use smallvec::SmallVec;
use stylesheets::origin::{Origin, OriginSet};
use stylist::Stylist; use stylist::Stylist;
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
@ -188,10 +189,16 @@ where
invalidates_self: false, invalidates_self: false,
}; };
// TODO(emilio): We could use the cut_off_inheritance from XBL to let document_origins = if self.cut_off_inheritance {
// skip user and author stuff in here if it's true. Origin::UserAgent.into()
self.shared_context.stylist.each_invalidation_map(|invalidation_map| { } else {
collector.collect_dependencies_in_invalidation_map(invalidation_map); OriginSet::all()
};
self.shared_context.stylist.each_invalidation_map(|invalidation_map, origin| {
if document_origins.contains(origin.into()) {
collector.collect_dependencies_in_invalidation_map(invalidation_map);
}
}); });
for stylist in self.xbl_stylists { for stylist in self.xbl_stylists {
@ -199,7 +206,7 @@ where
// figure out what to do with the quirks mode mismatches // figure out what to do with the quirks mode mismatches
// (that is, when bug 1406875 is properly fixed). // (that is, when bug 1406875 is properly fixed).
collector.quirks_mode = stylist.quirks_mode(); collector.quirks_mode = stylist.quirks_mode();
stylist.each_invalidation_map(|invalidation_map| { stylist.each_invalidation_map(|invalidation_map, _| {
collector.collect_dependencies_in_invalidation_map(invalidation_map); collector.collect_dependencies_in_invalidation_map(invalidation_map);
}) })
} }

View file

@ -486,10 +486,10 @@ impl Stylist {
/// create a whole new iterator type. /// create a whole new iterator type.
pub fn each_invalidation_map<'a, F>(&'a self, mut f: F) pub fn each_invalidation_map<'a, F>(&'a self, mut f: F)
where where
F: FnMut(&'a InvalidationMap) F: FnMut(&'a InvalidationMap, Origin)
{ {
for (data, _) in self.cascade_data.iter_origins() { for (data, origin) in self.cascade_data.iter_origins() {
f(&data.invalidation_map) f(&data.invalidation_map, origin)
} }
} }