diff options
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r-- | components/script/dom/macros.rs | 63 |
1 files changed, 39 insertions, 24 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 5d843ce5e26..e5193dcc8f1 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -6,9 +6,10 @@ macro_rules! make_getter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self) -> DOMString { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); element.get_string_attribute(&Atom::from_slice($htmlname)) } ); @@ -21,9 +22,10 @@ macro_rules! make_getter( macro_rules! make_bool_getter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self) -> bool { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not runtime. element.has_attribute(&Atom::from_slice($htmlname)) } @@ -37,9 +39,10 @@ macro_rules! make_bool_getter( macro_rules! make_uint_getter( ($attr:ident, $htmlname:expr, $default:expr) => ( fn $attr(&self) -> u32 { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not runtime. element.get_uint_attribute(&Atom::from_slice($htmlname), $default) } @@ -56,9 +59,10 @@ macro_rules! make_uint_getter( macro_rules! make_url_getter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self) -> DOMString { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not runtime. element.get_url_attribute(&Atom::from_slice($htmlname)) } @@ -73,9 +77,10 @@ macro_rules! make_url_getter( macro_rules! make_url_or_base_getter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self) -> DOMString { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); let url = element.get_url_attribute(&Atom::from_slice($htmlname)); if url.is_empty() { let window = window_from_node(self); @@ -94,11 +99,12 @@ macro_rules! make_url_or_base_getter( macro_rules! make_enumerated_getter( ( $attr:ident, $htmlname:expr, $default:expr, $(($choices: pat))|+) => ( fn $attr(&self) -> DOMString { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use std::ascii::AsciiExt; use std::borrow::ToOwned; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); let mut val = element.get_string_attribute(&Atom::from_slice($htmlname)); val.make_ascii_lowercase(); // https://html.spec.whatwg.org/multipage/#attr-fs-method @@ -119,9 +125,10 @@ macro_rules! make_enumerated_getter( macro_rules! make_setter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self, value: DOMString) { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not at runtime. element.set_string_attribute(&Atom::from_slice($htmlname), value) } @@ -132,9 +139,10 @@ macro_rules! make_setter( macro_rules! make_bool_setter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self, value: bool) { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not at runtime. element.set_bool_attribute(&Atom::from_slice($htmlname), value) } @@ -145,7 +153,8 @@ macro_rules! make_bool_setter( macro_rules! make_uint_setter( ($attr:ident, $htmlname:expr, $default:expr) => ( fn $attr(&self, value: u32) { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use dom::values::UNSIGNED_LONG_MAX; use string_cache::Atom; let value = if value > UNSIGNED_LONG_MAX { @@ -153,7 +162,7 @@ macro_rules! make_uint_setter( } else { value }; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not at runtime. element.set_uint_attribute(&Atom::from_slice($htmlname), value) } @@ -167,7 +176,8 @@ macro_rules! make_uint_setter( macro_rules! make_limited_uint_setter( ($attr:ident, $htmlname:expr, $default:expr) => ( fn $attr(&self, value: u32) -> $crate::dom::bindings::error::ErrorResult { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use dom::values::UNSIGNED_LONG_MAX; use string_cache::Atom; let value = if value == 0 { @@ -177,7 +187,7 @@ macro_rules! make_limited_uint_setter( } else { value }; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not runtime. element.set_uint_attribute(&Atom::from_slice($htmlname), value); Ok(()) @@ -195,9 +205,10 @@ macro_rules! make_limited_uint_setter( macro_rules! make_atomic_setter( ( $attr:ident, $htmlname:expr ) => ( fn $attr(&self, value: DOMString) { - use dom::bindings::codegen::InheritTypes::ElementCast; + use dom::bindings::conversions::Castable; + use dom::element::Element; use string_cache::Atom; - let element = ElementCast::from_ref(self); + let element = self.upcast::<Element>(); // FIXME(pcwalton): Do this at compile time, not at runtime. element.set_atomic_attribute(&Atom::from_slice($htmlname), value) } @@ -239,12 +250,16 @@ macro_rules! no_jsmanaged_fields( macro_rules! define_event_handler( ($handler: ident, $event_type: ident, $getter: ident, $setter: ident) => ( fn $getter(&self) -> Option<::std::rc::Rc<$handler>> { - let eventtarget = EventTargetCast::from_ref(self); + use dom::bindings::conversions::Castable; + use dom::eventtarget::EventTarget; + let eventtarget = self.upcast::<EventTarget>(); eventtarget.get_event_handler_common(stringify!($event_type)) } fn $setter(&self, listener: Option<::std::rc::Rc<$handler>>) { - let eventtarget = EventTargetCast::from_ref(self); + use dom::bindings::conversions::Castable; + use dom::eventtarget::EventTarget; + let eventtarget = self.upcast::<EventTarget>(); eventtarget.set_event_handler_common(stringify!($event_type), listener) } ) |