aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/cssrulelist.rs
diff options
context:
space:
mode:
authorsbansal3096 <sbansal3096@gmail.com>2019-03-21 22:11:20 +0530
committersbansal3096 <sbansal3096@gmail.com>2019-03-22 15:45:18 +0530
commit13eebbfe565d0c96125c1a947249bac499ff5362 (patch)
tree4e9f272ae3d5748c1e31ab332a360e62e920292d /components/script/dom/cssrulelist.rs
parente58226814f612edce3be999c0ced4a1edf0db96a (diff)
downloadservo-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.rs11
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),
)
})?;