mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Support basic immutable CSSOM
This commit is contained in:
parent
2220fcdc0b
commit
177d6fa4ee
33 changed files with 861 additions and 43 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue