diff options
Diffstat (limited to 'src/components/script/dom/bindings/element.rs')
-rw-r--r-- | src/components/script/dom/bindings/element.rs | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 60d4ca9cfc2..b7e6e013b9c 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -2,10 +2,13 @@ * 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::types::*; +use dom::bindings::codegen::*; use dom::bindings::node::unwrap; use dom::bindings::utils::jsval_to_str; use dom::bindings::utils::{domstring_to_jsval, WrapNewBindingObject}; use dom::bindings::utils::{str, CacheableWrapper, DOM_OBJECT_SLOT, DOMString}; +use dom::bindings::utils::{BindingObject, WrapperCache}; use dom::element::Element; use dom::element::{HTMLImageElementTypeId, HTMLHeadElementTypeId, HTMLScriptElementTypeId, HTMLDivElementTypeId}; @@ -306,3 +309,123 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> jsobj { return obj; } + +pub macro_rules! generate_cacheable_wrapper( + ($name: ident, $wrap: path) => ( + impl CacheableWrapper for $name { + fn get_wrappercache(&mut self) -> &mut WrapperCache { + self.parent.get_wrappercache() + } + + fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { + let mut unused = false; + $wrap(cx, scope, self, &mut unused) + } + } + ) +) + +pub macro_rules! generate_binding_object( + ($name: ident) => ( + impl BindingObject for $name { + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { + self.parent.GetParentObject(cx) + } + } + ) +) + +generate_cacheable_wrapper!(HTMLHeadElement, HTMLHeadElementBinding::Wrap) +generate_binding_object!(HTMLHeadElement) +generate_cacheable_wrapper!(HTMLAnchorElement, HTMLAnchorElementBinding::Wrap) +generate_binding_object!(HTMLAnchorElement) +generate_cacheable_wrapper!(HTMLAppletElement, HTMLAppletElementBinding::Wrap) +generate_binding_object!(HTMLAppletElement) +generate_cacheable_wrapper!(HTMLAreaElement, HTMLAreaElementBinding::Wrap) +generate_binding_object!(HTMLAreaElement) +generate_cacheable_wrapper!(HTMLBaseElement, HTMLBaseElementBinding::Wrap) +generate_binding_object!(HTMLBaseElement) +generate_cacheable_wrapper!(HTMLBodyElement, HTMLBodyElementBinding::Wrap) +generate_binding_object!(HTMLBodyElement) +generate_cacheable_wrapper!(HTMLButtonElement, HTMLButtonElementBinding::Wrap) +generate_binding_object!(HTMLButtonElement) +generate_cacheable_wrapper!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap) +generate_binding_object!(HTMLCanvasElement) +generate_cacheable_wrapper!(HTMLDataListElement, HTMLDataListElementBinding::Wrap) +generate_binding_object!(HTMLDataListElement) +generate_cacheable_wrapper!(HTMLDListElement, HTMLDListElementBinding::Wrap) +generate_binding_object!(HTMLDListElement) +generate_cacheable_wrapper!(HTMLFrameElement, HTMLFrameElementBinding::Wrap) +generate_binding_object!(HTMLFrameElement) +generate_cacheable_wrapper!(HTMLFrameSetElement, HTMLFrameSetElementBinding::Wrap) +generate_binding_object!(HTMLFrameSetElement) +generate_cacheable_wrapper!(HTMLBRElement, HTMLBRElementBinding::Wrap) +generate_binding_object!(HTMLBRElement) +generate_cacheable_wrapper!(HTMLHRElement, HTMLHRElementBinding::Wrap) +generate_binding_object!(HTMLHRElement) +generate_cacheable_wrapper!(HTMLHtmlElement, HTMLHtmlElementBinding::Wrap) +generate_binding_object!(HTMLHtmlElement) +generate_cacheable_wrapper!(HTMLDataElement, HTMLDataElementBinding::Wrap) +generate_binding_object!(HTMLDataElement) +generate_cacheable_wrapper!(HTMLDirectoryElement, HTMLDirectoryElementBinding::Wrap) +generate_binding_object!(HTMLDirectoryElement) +generate_cacheable_wrapper!(HTMLDivElement, HTMLDivElementBinding::Wrap) +generate_binding_object!(HTMLDivElement) +generate_cacheable_wrapper!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) +generate_binding_object!(HTMLEmbedElement) +generate_cacheable_wrapper!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap) +generate_binding_object!(HTMLFieldSetElement) +generate_cacheable_wrapper!(HTMLFontElement, HTMLFontElementBinding::Wrap) +generate_binding_object!(HTMLFontElement) +generate_cacheable_wrapper!(HTMLHeadingElement, HTMLHeadingElementBinding::Wrap) +generate_binding_object!(HTMLHeadingElement) +generate_cacheable_wrapper!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) +generate_binding_object!(HTMLIFrameElement) +generate_cacheable_wrapper!(HTMLImageElement, HTMLImageElementBinding::Wrap) +generate_binding_object!(HTMLImageElement) +generate_cacheable_wrapper!(HTMLInputElement, HTMLInputElementBinding::Wrap) +generate_binding_object!(HTMLInputElement) +generate_cacheable_wrapper!(HTMLLIElement, HTMLLIElementBinding::Wrap) +generate_binding_object!(HTMLLIElement) +generate_cacheable_wrapper!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) +generate_binding_object!(HTMLLinkElement) +generate_cacheable_wrapper!(HTMLMapElement, HTMLMapElementBinding::Wrap) +generate_binding_object!(HTMLMapElement) +generate_cacheable_wrapper!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) +generate_binding_object!(HTMLMetaElement) +generate_cacheable_wrapper!(HTMLOListElement, HTMLOListElementBinding::Wrap) +generate_binding_object!(HTMLOListElement) +generate_cacheable_wrapper!(HTMLParagraphElement, HTMLParagraphElementBinding::Wrap) +generate_binding_object!(HTMLParagraphElement) +generate_cacheable_wrapper!(HTMLProgressElement, HTMLProgressElementBinding::Wrap) +generate_binding_object!(HTMLProgressElement) +generate_cacheable_wrapper!(HTMLQuoteElement, HTMLQuoteElementBinding::Wrap) +generate_binding_object!(HTMLQuoteElement) +generate_cacheable_wrapper!(HTMLScriptElement, HTMLScriptElementBinding::Wrap) +generate_binding_object!(HTMLScriptElement) +generate_cacheable_wrapper!(HTMLSourceElement, HTMLSourceElementBinding::Wrap) +generate_binding_object!(HTMLSourceElement) +generate_cacheable_wrapper!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) +generate_binding_object!(HTMLSpanElement) +generate_cacheable_wrapper!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) +generate_binding_object!(HTMLStyleElement) +generate_cacheable_wrapper!(HTMLTableElement, HTMLTableElementBinding::Wrap) +generate_binding_object!(HTMLTableElement) +generate_cacheable_wrapper!(HTMLTableCaptionElement, HTMLTableCaptionElementBinding::Wrap) +generate_binding_object!(HTMLTableCaptionElement) +generate_cacheable_wrapper!(HTMLTableCellElement, HTMLTableCellElementBinding::Wrap) +generate_binding_object!(HTMLTableCellElement) +generate_cacheable_wrapper!(HTMLTableColElement, HTMLTableColElementBinding::Wrap) +generate_binding_object!(HTMLTableColElement) +generate_cacheable_wrapper!(HTMLTableRowElement, HTMLTableRowElementBinding::Wrap) +generate_binding_object!(HTMLTableRowElement) +generate_cacheable_wrapper!(HTMLTableSectionElement, HTMLTableSectionElementBinding::Wrap) +generate_binding_object!(HTMLTableSectionElement) +generate_cacheable_wrapper!(HTMLTextAreaElement, HTMLTextAreaElementBinding::Wrap) +generate_binding_object!(HTMLTextAreaElement) +generate_cacheable_wrapper!(HTMLTitleElement, HTMLTitleElementBinding::Wrap) +generate_binding_object!(HTMLTitleElement) +generate_cacheable_wrapper!(HTMLTimeElement, HTMLTimeElementBinding::Wrap) +generate_binding_object!(HTMLTimeElement) +generate_cacheable_wrapper!(HTMLUListElement, HTMLUListElementBinding::Wrap) +generate_binding_object!(HTMLUListElement) |