mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +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::{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);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue