diff options
author | Alexandrov Sergey <splavgm@gmail.com> | 2016-10-05 00:16:45 +0300 |
---|---|---|
committer | Alexandrov Sergey <splavgm@gmail.com> | 2016-10-06 18:22:53 +0300 |
commit | 9876020c2258ef833044596944ab0aa5370b0a74 (patch) | |
tree | f563c5ce4efbda8105eadd206f5b4bbe24073a8d /components/script/dom/node.rs | |
parent | 318b23ed0047cc39625ca2f33a55d647b5886019 (diff) | |
download | servo-9876020c2258ef833044596944ab0aa5370b0a74.tar.gz servo-9876020c2258ef833044596944ab0aa5370b0a74.zip |
add SVGElement, SVGGraphicsElement interfaces and SVGSVGElement element
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 041d6407418..70d73725cf4 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -23,6 +23,7 @@ use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::global::GlobalRef; use dom::bindings::inheritance::{Castable, CharacterDataTypeId, ElementTypeId}; use dom::bindings::inheritance::{EventTargetTypeId, HTMLElementTypeId, NodeTypeId}; +use dom::bindings::inheritance::{SVGElementTypeId, SVGGraphicsElementTypeId}; use dom::bindings::js::{JS, LayoutJS, MutNullableHeap}; use dom::bindings::js::Root; use dom::bindings::js::RootedReference; @@ -36,7 +37,7 @@ use dom::documenttype::DocumentType; use dom::element::{Element, ElementCreator}; use dom::eventtarget::EventTarget; use dom::htmlbodyelement::HTMLBodyElement; -use dom::htmlcanvaselement::LayoutHTMLCanvasElementHelpers; +use dom::htmlcanvaselement::{HTMLCanvasElement, LayoutHTMLCanvasElementHelpers}; use dom::htmlcollection::HTMLCollection; use dom::htmlelement::HTMLElement; use dom::htmliframeelement::{HTMLIFrameElement, HTMLIFrameElementLayoutMethods}; @@ -46,6 +47,7 @@ use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHel use dom::nodelist::NodeList; use dom::processinginstruction::ProcessingInstruction; use dom::range::WeakRangeVec; +use dom::svgsvgelement::{SVGSVGElement, LayoutSVGSVGElementHelpers}; use dom::text::Text; use dom::virtualmethods::{VirtualMethods, vtable_for}; use dom::window::Window; @@ -59,7 +61,7 @@ use libc::{self, c_void, uintptr_t}; use msg::constellation_msg::PipelineId; use parse::html::parse_html_fragment; use ref_slice::ref_slice; -use script_layout_interface::{HTMLCanvasData, OpaqueStyleAndLayoutData}; +use script_layout_interface::{HTMLCanvasData, OpaqueStyleAndLayoutData, SVGSVGData}; use script_layout_interface::{LayoutElementType, LayoutNodeType, TrustedNodeAddress}; use script_layout_interface::message::Msg; use script_traits::UntrustedNodeAddress; @@ -955,6 +957,7 @@ pub trait LayoutNodeHelpers { fn selection(&self) -> Option<Range<usize>>; fn image_url(&self) -> Option<Url>; fn canvas_data(&self) -> Option<HTMLCanvasData>; + fn svg_data(&self) -> Option<SVGSVGData>; fn iframe_pipeline_id(&self) -> PipelineId; fn opaque(&self) -> OpaqueNode; } @@ -1088,10 +1091,15 @@ impl LayoutNodeHelpers for LayoutJS<Node> { } fn canvas_data(&self) -> Option<HTMLCanvasData> { - self.downcast() + self.downcast::<HTMLCanvasElement>() .map(|canvas| canvas.data()) } + fn svg_data(&self) -> Option<SVGSVGData> { + self.downcast::<SVGSVGElement>() + .map(|svg| svg.data()) + } + fn iframe_pipeline_id(&self) -> PipelineId { let iframe_element = self.downcast::<HTMLIFrameElement>() .expect("not an iframe element!"); @@ -2687,6 +2695,8 @@ impl Into<LayoutElementType> for ElementTypeId { LayoutElementType::HTMLTableSectionElement, ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement) => LayoutElementType::HTMLTextAreaElement, + ElementTypeId::SVGElement(SVGElementTypeId::SVGGraphicsElement(SVGGraphicsElementTypeId::SVGSVGElement)) => + LayoutElementType::SVGSVGElement, _ => LayoutElementType::Element, } } |