diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-10-07 17:40:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-07 17:40:13 -0500 |
commit | dad3b4785a73aa6ddea5ed50ee4ef01bd4049c8d (patch) | |
tree | bd719f9d408f19bf6cabe5798506f7b0d59c1f5b /components/script/dom/svgelement.rs | |
parent | a25e0670b39df0efcc4c6642775c0de414461a3d (diff) | |
parent | 1f0b9ab3b7a6f0c8949fa9a78138a72e66393014 (diff) | |
download | servo-dad3b4785a73aa6ddea5ed50ee4ef01bd4049c8d.tar.gz servo-dad3b4785a73aa6ddea5ed50ee4ef01bd4049c8d.zip |
Auto merge of #13589 - splav:SVGElement#12974, r=pcwalton,Ms2ger
Support SVG element
<!-- Please describe your changes on the following line: -->
minimal SVG element implementation
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #12974 (github issue number if applicable).
<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13589)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/svgelement.rs')
-rw-r--r-- | components/script/dom/svgelement.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/components/script/dom/svgelement.rs b/components/script/dom/svgelement.rs new file mode 100644 index 00000000000..95fd42c40b6 --- /dev/null +++ b/components/script/dom/svgelement.rs @@ -0,0 +1,48 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use dom::bindings::codegen::Bindings::SVGElementBinding; +use dom::bindings::inheritance::Castable; +use dom::bindings::js::Root; +use dom::bindings::str::DOMString; +use dom::document::Document; +use dom::element::Element; +use dom::node::Node; +use dom::virtualmethods::VirtualMethods; +use string_cache::Atom; +use style::element_state::ElementState; + +#[dom_struct] +pub struct SVGElement { + element: Element, +} + +impl SVGElement { + pub fn new_inherited(tag_name: Atom, prefix: Option<DOMString>, + document: &Document) -> SVGElement { + SVGElement::new_inherited_with_state(ElementState::empty(), tag_name, prefix, document) + } + + pub fn new_inherited_with_state(state: ElementState, tag_name: Atom, + prefix: Option<DOMString>, document: &Document) + -> SVGElement { + SVGElement { + element: + Element::new_inherited_with_state(state, tag_name, ns!(svg), prefix, document), + } + } + + #[allow(unrooted_must_root)] + pub fn new(local_name: Atom, prefix: Option<DOMString>, document: &Document) -> Root<SVGElement> { + Node::reflect_node(box SVGElement::new_inherited(local_name, prefix, document), + document, + SVGElementBinding::Wrap) + } +} + +impl VirtualMethods for SVGElement { + fn super_type(&self) -> Option<&VirtualMethods> { + Some(self.upcast::<Element>() as &VirtualMethods) + } +} |