diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2016-11-10 16:16:56 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-11-15 06:56:18 -0800 |
commit | 177d6fa4eefd347645de18bc58120340e16e23f7 (patch) | |
tree | baecfa9af78df9b3d1947159b9e872dfdf0f5d62 /components/script/dom/node.rs | |
parent | 2220fcdc0bbb46b907a3a5ed974508c67ddb2890 (diff) | |
download | servo-177d6fa4eefd347645de18bc58120340e16e23f7.tar.gz servo-177d6fa4eefd347645de18bc58120340e16e23f7.zip |
Support basic immutable CSSOM
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 0f510719640..37e0548fa13 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -30,6 +30,7 @@ use dom::bindings::reflector::{Reflectable, reflect_dom_object}; use dom::bindings::str::{DOMString, USVString}; use dom::bindings::xmlname::namespace_from_domstring; use dom::characterdata::{CharacterData, LayoutCharacterDataHelpers}; +use dom::cssstylesheet::CSSStyleSheet; use dom::document::{Document, DocumentSource, IsHTMLDocument}; use dom::documentfragment::DocumentFragment; use dom::documenttype::DocumentType; @@ -43,6 +44,9 @@ use dom::htmlelement::HTMLElement; use dom::htmliframeelement::{HTMLIFrameElement, HTMLIFrameElementLayoutMethods}; use dom::htmlimageelement::{HTMLImageElement, LayoutHTMLImageElementHelpers}; use dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers}; +use dom::htmllinkelement::HTMLLinkElement; +use dom::htmlmetaelement::HTMLMetaElement; +use dom::htmlstyleelement::HTMLStyleElement; use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers}; use dom::nodelist::NodeList; use dom::processinginstruction::ProcessingInstruction; @@ -76,8 +80,10 @@ use std::default::Default; use std::iter; use std::mem; use std::ops::Range; +use std::sync::Arc; use style::dom::OpaqueNode; use style::selector_impl::ServoSelectorImpl; +use style::stylesheets::Stylesheet; use style::thread_state; use url::Url; use uuid::Uuid; @@ -901,6 +907,30 @@ impl Node { element.upcast::<Node>().remove_self(); Ok(()) } + + pub fn get_stylesheet(&self) -> Option<Arc<Stylesheet>> { + if let Some(node) = self.downcast::<HTMLStyleElement>() { + node.get_stylesheet() + } else if let Some(node) = self.downcast::<HTMLLinkElement>() { + node.get_stylesheet() + } else if let Some(node) = self.downcast::<HTMLMetaElement>() { + node.get_stylesheet() + } else { + None + } + } + + pub fn get_cssom_stylesheet(&self) -> Option<Root<CSSStyleSheet>> { + if let Some(node) = self.downcast::<HTMLStyleElement>() { + node.get_cssom_stylesheet() + } else if let Some(node) = self.downcast::<HTMLLinkElement>() { + node.get_cssom_stylesheet() + } else if let Some(node) = self.downcast::<HTMLMetaElement>() { + node.get_cssom_stylesheet() + } else { + None + } + } } |