mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
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:
parent
1b32709d95
commit
bd2a82334b
2 changed files with 15 additions and 8 deletions
|
@ -22,6 +22,7 @@ use selectors::attr::CaseSensitivity;
|
|||
use selectors::matching::{MatchingContext, MatchingMode, VisitedHandlingMode};
|
||||
use selectors::matching::matches_selector;
|
||||
use smallvec::SmallVec;
|
||||
use stylesheets::origin::{Origin, OriginSet};
|
||||
use stylist::Stylist;
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
|
@ -188,10 +189,16 @@ where
|
|||
invalidates_self: false,
|
||||
};
|
||||
|
||||
// TODO(emilio): We could use the cut_off_inheritance from XBL to
|
||||
// skip user and author stuff in here if it's true.
|
||||
self.shared_context.stylist.each_invalidation_map(|invalidation_map| {
|
||||
collector.collect_dependencies_in_invalidation_map(invalidation_map);
|
||||
let document_origins = if self.cut_off_inheritance {
|
||||
Origin::UserAgent.into()
|
||||
} else {
|
||||
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 {
|
||||
|
@ -199,7 +206,7 @@ where
|
|||
// figure out what to do with the quirks mode mismatches
|
||||
// (that is, when bug 1406875 is properly fixed).
|
||||
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);
|
||||
})
|
||||
}
|
||||
|
|
|
@ -486,10 +486,10 @@ impl Stylist {
|
|||
/// create a whole new iterator type.
|
||||
pub fn each_invalidation_map<'a, F>(&'a self, mut f: F)
|
||||
where
|
||||
F: FnMut(&'a InvalidationMap)
|
||||
F: FnMut(&'a InvalidationMap, Origin)
|
||||
{
|
||||
for (data, _) in self.cascade_data.iter_origins() {
|
||||
f(&data.invalidation_map)
|
||||
for (data, origin) in self.cascade_data.iter_origins() {
|
||||
f(&data.invalidation_map, origin)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue