mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Make parent stylesheet optional for CSSRules
This commit is contained in:
parent
52a3a71be3
commit
53c99662bc
11 changed files with 41 additions and 32 deletions
|
@ -27,7 +27,7 @@ pub struct CSSKeyframesRule {
|
|||
}
|
||||
|
||||
impl CSSKeyframesRule {
|
||||
fn new_inherited(parent: &CSSStyleSheet, keyframesrule: Arc<RwLock<KeyframesRule>>) -> CSSKeyframesRule {
|
||||
fn new_inherited(parent: Option<&CSSStyleSheet>, keyframesrule: Arc<RwLock<KeyframesRule>>) -> CSSKeyframesRule {
|
||||
CSSKeyframesRule {
|
||||
cssrule: CSSRule::new_inherited(parent),
|
||||
keyframesrule: keyframesrule,
|
||||
|
@ -36,7 +36,7 @@ impl CSSKeyframesRule {
|
|||
}
|
||||
|
||||
#[allow(unrooted_must_root)]
|
||||
pub fn new(window: &Window, parent: &CSSStyleSheet,
|
||||
pub fn new(window: &Window, parent: Option<&CSSStyleSheet>,
|
||||
keyframesrule: Arc<RwLock<KeyframesRule>>) -> Root<CSSKeyframesRule> {
|
||||
reflect_dom_object(box CSSKeyframesRule::new_inherited(parent, keyframesrule),
|
||||
window,
|
||||
|
@ -44,10 +44,13 @@ impl CSSKeyframesRule {
|
|||
}
|
||||
|
||||
fn rulelist(&self) -> Root<CSSRuleList> {
|
||||
self.rulelist.or_init(|| CSSRuleList::new(self.global().as_window(),
|
||||
// temporary unwrap
|
||||
&self.upcast::<CSSRule>().GetParentStyleSheet().unwrap(),
|
||||
RulesSource::Keyframes(self.keyframesrule.clone())))
|
||||
self.rulelist.or_init(|| {
|
||||
let sheet = self.upcast::<CSSRule>().GetParentStyleSheet();
|
||||
let sheet = sheet.as_ref().map(|s| &**s);
|
||||
CSSRuleList::new(self.global().as_window(),
|
||||
sheet,
|
||||
RulesSource::Keyframes(self.keyframesrule.clone()))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue