diff options
Diffstat (limited to 'components/script/dom/cssgroupingrule.rs')
-rw-r--r-- | components/script/dom/cssgroupingrule.rs | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/components/script/dom/cssgroupingrule.rs b/components/script/dom/cssgroupingrule.rs index cd55cd358b6..7176dda8d12 100644 --- a/components/script/dom/cssgroupingrule.rs +++ b/components/script/dom/cssgroupingrule.rs @@ -4,7 +4,6 @@ use dom::bindings::codegen::Bindings::CSSGroupingRuleBinding; use dom::bindings::codegen::Bindings::CSSGroupingRuleBinding::CSSGroupingRuleMethods; -use dom::bindings::codegen::Bindings::CSSRuleBinding::CSSRuleBinding::CSSRuleMethods; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::inheritance::Castable; use dom::bindings::js::{JS, MutNullableHeap, Root}; @@ -14,38 +13,40 @@ use dom::cssrule::CSSRule; use dom::cssrulelist::{CSSRuleList, RulesSource}; use dom::cssstylesheet::CSSStyleSheet; use dom::window::Window; +use parking_lot::RwLock; +use std::sync::Arc; use style::stylesheets::CssRules as StyleCssRules; #[dom_struct] pub struct CSSGroupingRule { cssrule: CSSRule, #[ignore_heap_size_of = "Arc"] - rules: StyleCssRules, + rules: Arc<RwLock<StyleCssRules>>, rulelist: MutNullableHeap<JS<CSSRuleList>>, } impl CSSGroupingRule { - pub fn new_inherited(parent: Option<&CSSStyleSheet>, - rules: StyleCssRules) -> CSSGroupingRule { + pub fn new_inherited(parent_stylesheet: &CSSStyleSheet, + rules: Arc<RwLock<StyleCssRules>>) -> CSSGroupingRule { CSSGroupingRule { - cssrule: CSSRule::new_inherited(parent), + cssrule: CSSRule::new_inherited(parent_stylesheet), rules: rules, rulelist: MutNullableHeap::new(None), } } #[allow(unrooted_must_root)] - pub fn new(window: &Window, parent: Option<&CSSStyleSheet>, rules: StyleCssRules) -> Root<CSSGroupingRule> { - reflect_dom_object(box CSSGroupingRule::new_inherited(parent, rules), + pub fn new(window: &Window, parent_stylesheet: &CSSStyleSheet, + rules: Arc<RwLock<StyleCssRules>>) -> Root<CSSGroupingRule> { + reflect_dom_object(box CSSGroupingRule::new_inherited(parent_stylesheet, rules), window, CSSGroupingRuleBinding::Wrap) } fn rulelist(&self) -> Root<CSSRuleList> { - let sheet = self.upcast::<CSSRule>().GetParentStyleSheet(); - let sheet = sheet.as_ref().map(|s| &**s); + let parent_stylesheet = self.upcast::<CSSRule>().parent_stylesheet(); self.rulelist.or_init(|| CSSRuleList::new(self.global().as_window(), - sheet, + parent_stylesheet, RulesSource::Rules(self.rules.clone()))) } } |