diff options
author | Cameron McCormack <cam@mcc.id.au> | 2016-11-23 18:07:16 +0800 |
---|---|---|
committer | Cameron McCormack <cam@mcc.id.au> | 2016-11-25 11:27:51 +0800 |
commit | 64ff6dc103e4e51fc476b9eed7319df413d20028 (patch) | |
tree | 24e64146c6c04a630ab733404345fe252de34fc4 /components/script/dom/cssstylesheet.rs | |
parent | 4529435f96cadf0a7b32f7417bef885833a7cabc (diff) | |
download | servo-64ff6dc103e4e51fc476b9eed7319df413d20028.tar.gz servo-64ff6dc103e4e51fc476b9eed7319df413d20028.zip |
Implement StyleSheet.disabled.
Diffstat (limited to 'components/script/dom/cssstylesheet.rs')
-rw-r--r-- | components/script/dom/cssstylesheet.rs | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/components/script/dom/cssstylesheet.rs b/components/script/dom/cssstylesheet.rs index 2e2ac45d867..32413ea0298 100644 --- a/components/script/dom/cssstylesheet.rs +++ b/components/script/dom/cssstylesheet.rs @@ -4,11 +4,13 @@ use dom::bindings::codegen::Bindings::CSSStyleSheetBinding; use dom::bindings::codegen::Bindings::CSSStyleSheetBinding::CSSStyleSheetMethods; +use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::js::{JS, Root, MutNullableHeap}; use dom::bindings::reflector::{reflect_dom_object, Reflectable}; use dom::bindings::str::DOMString; use dom::cssrulelist::{CSSRuleList, RulesSource}; +use dom::element::Element; use dom::stylesheet::StyleSheet; use dom::window::Window; use std::sync::Arc; @@ -17,27 +19,34 @@ use style::stylesheets::Stylesheet as StyleStyleSheet; #[dom_struct] pub struct CSSStyleSheet { stylesheet: StyleSheet, + owner: JS<Element>, rulelist: MutNullableHeap<JS<CSSRuleList>>, #[ignore_heap_size_of = "Arc"] style_stylesheet: Arc<StyleStyleSheet>, } impl CSSStyleSheet { - fn new_inherited(type_: DOMString, href: Option<DOMString>, - title: Option<DOMString>, stylesheet: Arc<StyleStyleSheet>) -> CSSStyleSheet { + fn new_inherited(owner: &Element, + type_: DOMString, + href: Option<DOMString>, + title: Option<DOMString>, + stylesheet: Arc<StyleStyleSheet>) -> CSSStyleSheet { CSSStyleSheet { stylesheet: StyleSheet::new_inherited(type_, href, title), + owner: JS::from_ref(owner), rulelist: MutNullableHeap::new(None), style_stylesheet: stylesheet, } } #[allow(unrooted_must_root)] - pub fn new(window: &Window, type_: DOMString, + pub fn new(window: &Window, + owner: &Element, + type_: DOMString, href: Option<DOMString>, title: Option<DOMString>, stylesheet: Arc<StyleStyleSheet>) -> Root<CSSStyleSheet> { - reflect_dom_object(box CSSStyleSheet::new_inherited(type_, href, title, stylesheet), + reflect_dom_object(box CSSStyleSheet::new_inherited(owner, type_, href, title, stylesheet), window, CSSStyleSheetBinding::Wrap) } @@ -48,6 +57,16 @@ impl CSSStyleSheet { RulesSource::Rules(self.style_stylesheet .rules.clone()))) } + + pub fn disabled(&self) -> bool { + self.style_stylesheet.disabled() + } + + pub fn set_disabled(&self, disabled: bool) { + if self.style_stylesheet.set_disabled(disabled) { + self.global().as_window().Document().invalidate_stylesheets(); + } + } } impl CSSStyleSheetMethods for CSSStyleSheet { |