diff options
author | bors-servo <release+servo@mozilla.com> | 2013-08-27 15:33:32 -0700 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2013-08-27 15:33:32 -0700 |
commit | b75a396c412dfa1af3229349d8e5281e40471882 (patch) | |
tree | 287c4f1f07f6543b689dda8f56f8d5d7d1a91d73 /src/components/script/dom/bindings | |
parent | 3f2969cfa89b7d89dad26ba29fb63fe16feb9eeb (diff) | |
parent | d31e308d3fd0f15d50865a003cc00d32f3a567c3 (diff) | |
download | servo-b75a396c412dfa1af3229349d8e5281e40471882.tar.gz servo-b75a396c412dfa1af3229349d8e5281e40471882.zip |
auto merge of #806 : jdm/servo/moarautogen, r=metajack
...ow be obtained via dom::types::*, which is autogenerated.
Diffstat (limited to 'src/components/script/dom/bindings')
-rw-r--r-- | src/components/script/dom/bindings/codegen/Bindings.conf | 8 | ||||
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 83 | ||||
-rw-r--r-- | src/components/script/dom/bindings/codegen/GlobalGen.py | 6 | ||||
-rw-r--r-- | src/components/script/dom/bindings/element.rs | 123 | ||||
-rw-r--r-- | src/components/script/dom/bindings/node.rs | 47 | ||||
-rw-r--r-- | src/components/script/dom/bindings/text.rs | 3 |
6 files changed, 159 insertions, 111 deletions
diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 2ee86c3cca1..a06d1f2d989 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -230,6 +230,12 @@ DOMInterfaces = { 'pointerType': '', }, +'HTMLFormElement': { + 'nativeType': 'AbstractNode<ScriptView>', + 'pointerType': '', + 'register': False +}, + 'HTMLOptionsCollection': [ { 'nativeType': 'nsHTMLOptionCollection', @@ -565,7 +571,7 @@ addHTMLElement('HTMLElement') addHTMLElement('HTMLEmbedElement') addHTMLElement('HTMLFieldSetElement') addHTMLElement('HTMLFontElement') -addHTMLElement('HTMLFormElement') +#addHTMLElement('HTMLFormElement') addHTMLElement('HTMLFrameElement') addHTMLElement('HTMLFrameSetElement') addHTMLElement('HTMLHeadElement') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index c9dc5d28aee..e524f927e47 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4612,75 +4612,15 @@ class CGBindingRoot(CGThing): 'js::jsapi::*', 'js::jsfriendapi::bindgen::*', 'js::glue::*', - 'dom::characterdata::CharacterData', #XXXjdm - 'dom::node::{AbstractNode, Node, Text}', #XXXjdm - 'dom::document::{Document, AbstractDocument}', #XXXjdm - 'dom::element::{Element, HTMLHeadElement, HTMLHtmlElement}', #XXXjdm - 'dom::element::{HTMLDivElement, HTMLSpanElement, HTMLParagraphElement}', #XXXjdm - 'dom::htmlanchorelement::HTMLAnchorElement', #XXXjdm - 'dom::htmlappletelement::HTMLAppletElement', #XXXjune0cho - 'dom::htmlareaelement::HTMLAreaElement', #XXXjune0cho - 'dom::htmlbaseelement::HTMLBaseElement', #XXXjune0cho - 'dom::htmlbodyelement::HTMLBodyElement', #XXXjune0cho - 'dom::htmlbrelement::HTMLBRElement', #XXXrecrack - 'dom::htmlbuttonelement::HTMLButtonElement', #XXXjdm - 'dom::htmlcanvaselement::HTMLCanvasElement', - 'dom::htmldataelement::HTMLDataElement', #XXXjune0cho - 'dom::htmldatalistelement::HTMLDataListElement', - 'dom::htmldlistelement::HTMLDListElement', - 'dom::htmldirectoryelement::HTMLDirectoryElement', - 'dom::htmlelement::HTMLElement', #XXXjdm - 'dom::htmlembedelement::HTMLEmbedElement', #XXXjdm - 'dom::htmlfieldsetelement::HTMLFieldSetElement', #XXXjdm - 'dom::htmlfontelement::HTMLFontElement', #XXXjdm - 'dom::htmlframeelement::HTMLFrameElement', #XXXjdm - 'dom::htmlframesetelement::HTMLFrameSetElement', #XXXjdm - 'dom::htmldocument::HTMLDocument', #XXXjdm - 'dom::htmlheadingelement::HTMLHeadingElement', - 'dom::htmlhrelement::HTMLHRElement', - 'dom::htmliframeelement::HTMLIFrameElement', #XXXjdm - 'dom::htmlimageelement::HTMLImageElement', #XXXjdm - 'dom::htmlinputelement::HTMLInputElement', - 'dom::htmllielement::HTMLLIElement', - 'dom::htmllinkelement::HTMLLinkElement', #XXXrecrack - 'dom::htmlmapelement::HTMLMapElement', - 'dom::htmlmetaelement::HTMLMetaElement', - 'dom::htmlolistelement::HTMLOListElement', - 'dom::htmlprogresselement::HTMLProgressElement', - 'dom::htmlquoteelement::HTMLQuoteElement', - 'dom::htmlscriptelement::HTMLScriptElement', - 'dom::htmlsourceelement::HTMLSourceElement', - 'dom::htmlstyleelement::HTMLStyleElement', - 'dom::htmltablecaptionelement::HTMLTableCaptionElement', - 'dom::htmltableelement::HTMLTableElement', - 'dom::htmltablecellelement::HTMLTableCellElement', - 'dom::htmltablecolelement::HTMLTableColElement', - 'dom::htmltablerowelement::HTMLTableRowElement', - 'dom::htmltablesectionelement::HTMLTableSectionElement', - 'dom::htmltextareaelement::HTMLTextAreaElement', - 'dom::htmltimeelement::HTMLTimeElement', - 'dom::htmltitleelement::HTMLTitleElement', #XXXyusukesuzuki - 'dom::htmlulistelement::HTMLUListElement', + 'dom::types::*', 'dom::bindings::utils::*', 'dom::bindings::conversions::*', - 'dom::blob::*', #XXXjdm - 'dom::clientrect::*', #XXXjdm - 'dom::clientrectlist::*', #XXXjdm - 'dom::htmlcollection::*', #XXXjdm - 'dom::bindings::proxyhandler::*', - 'dom::domparser::*', #XXXjdm - 'dom::event::*', #XXXjdm - 'dom::eventtarget::*', #XXXjdm - 'dom::formdata::*', #XXXjdm - 'dom::mouseevent::*', #XXXjdm - 'dom::uievent::*', #XXXjdm - 'dom::validitystate::*', #XXXjdm - 'dom::windowproxy::*', #XXXjdm - 'dom::window::Window', #XXXjdm 'dom::bindings::codegen::*', #XXXjdm 'script_task::{JSPageInfo, page_from_context}', 'dom::bindings::utils::EnumEntry', - 'dom::node::ScriptView', + 'dom::bindings::proxyhandler::*', + 'dom::document::AbstractDocument', + 'dom::node::{AbstractNode, ScriptView}', 'servo_util::vec::zip_copies', 'std::cast', 'std::libc', @@ -4782,3 +4722,18 @@ class GlobalGenRoots(): # Done. return curr + @staticmethod + def InterfaceTypes(config): + + descriptors = [d.name for d in config.getDescriptors(register=True)] + curr = CGList([CGGeneric(declare="pub use dom::%s::%s;\n" % (name.lower(), name)) for name in descriptors]) + curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT) + return curr + + @staticmethod + def BindingDeclarations(config): + + descriptors = [d.name for d in config.getDescriptors(register=True)] + curr = CGList([CGGeneric(declare="pub mod %sBinding;\n" % name) for name in descriptors]) + curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT) + return curr diff --git a/src/components/script/dom/bindings/codegen/GlobalGen.py b/src/components/script/dom/bindings/codegen/GlobalGen.py index ab6427a638c..9f46c786065 100644 --- a/src/components/script/dom/bindings/codegen/GlobalGen.py +++ b/src/components/script/dom/bindings/codegen/GlobalGen.py @@ -80,6 +80,12 @@ def main(): # Generate the common code. generate_file(config, 'RegisterBindings', 'declare+define') + # Generate the type list. + generate_file(config, 'InterfaceTypes', 'declare+define') + + # Generate the module declarations. + generate_file(config, 'BindingDeclarations', 'declare+define') + #XXXjdm No union support yet #generate_file(config, 'UnionTypes', 'declare') #generate_file(config, 'UnionConversions', 'declare') 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) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 0d7b99776d4..f7681775e24 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -25,52 +25,9 @@ use dom::element::{HTMLElementTypeId, HTMLTableColElementTypeId, HTMLTableRowElementTypeId, HTMLTableSectionElementTypeId, HTMLTimeElementTypeId, HTMLTitleElementTypeId, HTMLUListElementTypeId, HTMLDListElementTypeId}; -use dom::element::{HTMLHeadElement,HTMLHtmlElement, HTMLDivElement, HTMLParagraphElement, HTMLSpanElement}; -use dom::htmlelement::HTMLElement; -use dom::htmlanchorelement::HTMLAnchorElement; -use dom::htmlappletelement::HTMLAppletElement; -use dom::htmlareaelement::HTMLAreaElement; -use dom::htmlbaseelement::HTMLBaseElement; -use dom::htmlbodyelement::HTMLBodyElement; -use dom::htmlbuttonelement::HTMLButtonElement; -use dom::htmlhrelement::HTMLHRElement; -use dom::htmlbrelement::HTMLBRElement; -use dom::htmlcanvaselement::HTMLCanvasElement; -use dom::htmldataelement::HTMLDataElement; -use dom::htmldatalistelement::HTMLDataListElement; -use dom::htmldirectoryelement::HTMLDirectoryElement; -use dom::htmldlistelement::HTMLDListElement; -use dom::htmlembedelement::HTMLEmbedElement; -use dom::htmlfieldsetelement::HTMLFieldSetElement; -use dom::htmlfontelement::HTMLFontElement; -use dom::htmlframeelement::HTMLFrameElement; -use dom::htmlframesetelement::HTMLFrameSetElement; -use dom::htmlheadingelement::HTMLHeadingElement; -use dom::htmliframeelement::HTMLIFrameElement; -use dom::htmlimageelement::HTMLImageElement; -use dom::htmlinputelement::HTMLInputElement; -use dom::htmllielement::HTMLLIElement; -use dom::htmllinkelement::HTMLLinkElement; -use dom::htmlmapelement::HTMLMapElement; -use dom::htmlmetaelement::HTMLMetaElement; -use dom::htmlolistelement::HTMLOListElement; -use dom::htmlprogresselement::HTMLProgressElement; -use dom::htmlquoteelement::HTMLQuoteElement; -use dom::htmlscriptelement::HTMLScriptElement; -use dom::htmlsourceelement::HTMLSourceElement; -use dom::htmlstyleelement::HTMLStyleElement; -use dom::htmltableelement::HTMLTableElement; -use dom::htmltablecaptionelement::HTMLTableCaptionElement; -use dom::htmltablecellelement::HTMLTableCellElement; -use dom::htmltablecolelement::HTMLTableColElement; -use dom::htmltablerowelement::HTMLTableRowElement; -use dom::htmltablesectionelement::HTMLTableSectionElement; -use dom::htmltextareaelement::HTMLTextAreaElement; -use dom::htmltimeelement::HTMLTimeElement; -use dom::htmltitleelement::HTMLTitleElement; -use dom::htmlulistelement::HTMLUListElement; +use dom::types::*; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; -use dom::node::{DoctypeNodeTypeId, ScriptView, Text}; +use dom::node::{DoctypeNodeTypeId, ScriptView}; use std::cast; use std::libc::c_uint; diff --git a/src/components/script/dom/bindings/text.rs b/src/components/script/dom/bindings/text.rs index efa8cc90206..9b231d7087d 100644 --- a/src/components/script/dom/bindings/text.rs +++ b/src/components/script/dom/bindings/text.rs @@ -6,8 +6,9 @@ use dom::bindings::element; use dom::bindings::node::unwrap; use dom::bindings::utils; use dom::bindings::utils::{DOM_OBJECT_SLOT, CacheableWrapper}; -use dom::node::{AbstractNode, Text, Comment, Doctype, TextNodeTypeId, CommentNodeTypeId}; +use dom::node::{AbstractNode, Comment, Doctype, TextNodeTypeId, CommentNodeTypeId}; use dom::node::{DoctypeNodeTypeId, ScriptView}; +use dom::text::Text; use js::jsapi::{JSFreeOp, JSObject, JSContext}; use js::jsapi::{JS_SetReservedSlot}; |