diff options
Diffstat (limited to 'components/script/dom/svgsvgelement.rs')
-rw-r--r-- | components/script/dom/svgsvgelement.rs | 85 |
1 files changed, 45 insertions, 40 deletions
diff --git a/components/script/dom/svgsvgelement.rs b/components/script/dom/svgsvgelement.rs index 7c7d85f17b0..583bdb0eb44 100644 --- a/components/script/dom/svgsvgelement.rs +++ b/components/script/dom/svgsvgelement.rs @@ -1,19 +1,18 @@ /* 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/. */ + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use dom::attr::Attr; -use dom::bindings::codegen::Bindings::SVGSVGElementBinding; -use dom::bindings::inheritance::Castable; -use dom::bindings::js::{LayoutJS, Root}; -use dom::bindings::str::DOMString; -use dom::document::Document; -use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; -use dom::node::Node; -use dom::svggraphicselement::SVGGraphicsElement; -use dom::virtualmethods::VirtualMethods; +use crate::dom::attr::Attr; +use crate::dom::bindings::inheritance::Castable; +use crate::dom::bindings::root::{DomRoot, LayoutDom}; +use crate::dom::bindings::str::DOMString; +use crate::dom::document::Document; +use crate::dom::element::{AttributeMutation, Element, LayoutElementHelpers}; +use crate::dom::node::Node; +use crate::dom::svggraphicselement::SVGGraphicsElement; +use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; -use html5ever_atoms::LocalName; +use html5ever::{LocalName, Prefix}; use script_layout_interface::SVGSVGData; use style::attr::AttrValue; @@ -22,52 +21,55 @@ const DEFAULT_HEIGHT: u32 = 150; #[dom_struct] pub struct SVGSVGElement { - svggraphicselement: SVGGraphicsElement + svggraphicselement: SVGGraphicsElement, } impl SVGSVGElement { - fn new_inherited(local_name: LocalName, - prefix: Option<DOMString>, - document: &Document) -> SVGSVGElement { + fn new_inherited( + local_name: LocalName, + prefix: Option<Prefix>, + document: &Document, + ) -> SVGSVGElement { SVGSVGElement { - svggraphicselement: - SVGGraphicsElement::new_inherited(local_name, prefix, document) + svggraphicselement: SVGGraphicsElement::new_inherited(local_name, prefix, document), } } #[allow(unrooted_must_root)] - pub fn new(local_name: LocalName, - prefix: Option<DOMString>, - document: &Document) -> Root<SVGSVGElement> { - Node::reflect_node(box SVGSVGElement::new_inherited(local_name, prefix, document), - document, - SVGSVGElementBinding::Wrap) + pub fn new( + local_name: LocalName, + prefix: Option<Prefix>, + document: &Document, + ) -> DomRoot<SVGSVGElement> { + Node::reflect_node( + Box::new(SVGSVGElement::new_inherited(local_name, prefix, document)), + document, + ) } } pub trait LayoutSVGSVGElementHelpers { - fn data(&self) -> SVGSVGData; + fn data(self) -> SVGSVGData; } -impl LayoutSVGSVGElementHelpers for LayoutJS<SVGSVGElement> { - #[allow(unsafe_code)] - fn data(&self) -> SVGSVGData { - unsafe { - let SVG = &*self.unsafe_get(); - - let width_attr = SVG.upcast::<Element>().get_attr_for_layout(&ns!(), &local_name!("width")); - let height_attr = SVG.upcast::<Element>().get_attr_for_layout(&ns!(), &local_name!("height")); - SVGSVGData { - width: width_attr.map_or(DEFAULT_WIDTH, |val| val.as_uint()), - height: height_attr.map_or(DEFAULT_HEIGHT, |val| val.as_uint()), - } +impl LayoutSVGSVGElementHelpers for LayoutDom<'_, SVGSVGElement> { + fn data(self) -> SVGSVGData { + let width_attr = self + .upcast::<Element>() + .get_attr_for_layout(&ns!(), &local_name!("width")); + let height_attr = self + .upcast::<Element>() + .get_attr_for_layout(&ns!(), &local_name!("height")); + SVGSVGData { + width: width_attr.map_or(DEFAULT_WIDTH, |val| val.as_uint()), + height: height_attr.map_or(DEFAULT_HEIGHT, |val| val.as_uint()), } } } impl VirtualMethods for SVGSVGElement { - fn super_type(&self) -> Option<&VirtualMethods> { - Some(self.upcast::<SVGGraphicsElement>() as &VirtualMethods) + fn super_type(&self) -> Option<&dyn VirtualMethods> { + Some(self.upcast::<SVGGraphicsElement>() as &dyn VirtualMethods) } fn attribute_mutated(&self, attr: &Attr, mutation: AttributeMutation) { @@ -78,7 +80,10 @@ impl VirtualMethods for SVGSVGElement { match name { &local_name!("width") => AttrValue::from_u32(value.into(), DEFAULT_WIDTH), &local_name!("height") => AttrValue::from_u32(value.into(), DEFAULT_HEIGHT), - _ => self.super_type().unwrap().parse_plain_attribute(name, value), + _ => self + .super_type() + .unwrap() + .parse_plain_attribute(name, value), } } } |