aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2013-08-27 15:33:32 -0700
committerbors-servo <release+servo@mozilla.com>2013-08-27 15:33:32 -0700
commitb75a396c412dfa1af3229349d8e5281e40471882 (patch)
tree287c4f1f07f6543b689dda8f56f8d5d7d1a91d73 /src/components/script/dom/bindings
parent3f2969cfa89b7d89dad26ba29fb63fe16feb9eeb (diff)
parentd31e308d3fd0f15d50865a003cc00d32f3a567c3 (diff)
downloadservo-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.conf8
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py83
-rw-r--r--src/components/script/dom/bindings/codegen/GlobalGen.py6
-rw-r--r--src/components/script/dom/bindings/element.rs123
-rw-r--r--src/components/script/dom/bindings/node.rs47
-rw-r--r--src/components/script/dom/bindings/text.rs3
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};