style: Update StyleSource to use ArcUnion.

Bug: 1455784
Reviewed-by: Manishearth
MozReview-Commit-ID: AT4sud9goGV
This commit is contained in:
Bobby Holley 2018-04-20 16:28:33 -07:00 committed by Emilio Cobos Álvarez
parent cbbefebdba
commit 48558e313a
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
7 changed files with 99 additions and 109 deletions

View file

@ -8,7 +8,7 @@
use fnv::FnvHashMap;
use logical_geometry::WritingMode;
use properties::{ComputedValues, StyleBuilder};
use rule_tree::{StrongRuleNode, StyleSource};
use rule_tree::StrongRuleNode;
use selector_parser::PseudoElement;
use servo_arc::Arc;
use shared_lock::StylesheetGuards;
@ -97,16 +97,18 @@ impl RuleCache {
mut rule_node: Option<&'r StrongRuleNode>,
) -> Option<&'r StrongRuleNode> {
while let Some(node) = rule_node {
match *node.style_source() {
StyleSource::Declarations(ref decls) => {
let cascade_level = node.cascade_level();
let decls = decls.read_with(cascade_level.guard(guards));
if decls.contains_any_reset() {
break;
}
match node.style_source() {
Some(s) => match s.as_declarations() {
Some(decls) => {
let cascade_level = node.cascade_level();
let decls = decls.read_with(cascade_level.guard(guards));
if decls.contains_any_reset() {
break;
}
},
None => break,
},
StyleSource::None => {},
StyleSource::Style(_) => break,
None => {},
}
rule_node = node.parent();
}