diff options
author | sbansal3096 <sbansal3096@gmail.com> | 2019-03-21 22:11:20 +0530 |
---|---|---|
committer | sbansal3096 <sbansal3096@gmail.com> | 2019-03-22 15:45:18 +0530 |
commit | 13eebbfe565d0c96125c1a947249bac499ff5362 (patch) | |
tree | 4e9f272ae3d5748c1e31ab332a360e62e920292d /components/script/dom/cssrulelist.rs | |
parent | e58226814f612edce3be999c0ced4a1edf0db96a (diff) | |
download | servo-13eebbfe565d0c96125c1a947249bac499ff5362.tar.gz servo-13eebbfe565d0c96125c1a947249bac499ff5362.zip |
Fix insertRule crash by exposing getter on stylesheet's owner
Diffstat (limited to 'components/script/dom/cssrulelist.rs')
-rw-r--r-- | components/script/dom/cssrulelist.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs index b4358699cfd..b7dc2025343 100644 --- a/components/script/dom/cssrulelist.rs +++ b/components/script/dom/cssrulelist.rs @@ -6,12 +6,15 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::CSSRuleListBinding; use crate::dom::bindings::codegen::Bindings::CSSRuleListBinding::CSSRuleListMethods; use crate::dom::bindings::error::{Error, ErrorResult, Fallible}; +use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom}; use crate::dom::csskeyframerule::CSSKeyframeRule; use crate::dom::cssrule::CSSRule; use crate::dom::cssstylesheet::CSSStyleSheet; +use crate::dom::htmlelement::HTMLElement; use crate::dom::window::Window; +use crate::stylesheet_loader::StylesheetLoader; use dom_struct::dom_struct; use servo_arc::Arc; use style::shared_lock::Locked; @@ -101,6 +104,12 @@ impl CSSRuleList { let index = idx as usize; let parent_stylesheet = self.parent_stylesheet.style_stylesheet(); + let owner = self + .parent_stylesheet + .get_owner() + .downcast::<HTMLElement>() + .unwrap(); + let loader = StylesheetLoader::for_element(owner); let new_rule = css_rules.with_raw_offset_arc(|arc| { arc.insert_rule( &parent_stylesheet.shared_lock, @@ -108,7 +117,7 @@ impl CSSRuleList { &parent_stylesheet.contents, index, nested, - None, + Some(&loader), ) })?; |