diff options
author | bors-servo <release+servo@mozilla.com> | 2013-10-18 08:13:05 -0700 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2013-10-18 08:13:05 -0700 |
commit | 284ad5ee8eb43274036b05ae400fccb823313d15 (patch) | |
tree | 8bbe7f1206722ea0437a23367d44d156e9a05f0c /src | |
parent | 19c1b023e0d4269d2155cc3233999ead8c5af60f (diff) | |
parent | 321e0373fa0b4f9f0286cad316ee59798e905c96 (diff) | |
download | servo-284ad5ee8eb43274036b05ae400fccb823313d15.tar.gz servo-284ad5ee8eb43274036b05ae400fccb823313d15.zip |
auto merge of #1086 : Ms2ger/servo/GetParentObject, r=jdm
Diffstat (limited to 'src')
23 files changed, 62 insertions, 200 deletions
diff --git a/src/components/script/dom/bindings/domparser.rs b/src/components/script/dom/bindings/domparser.rs index 586ef039911..0d2af282e01 100644 --- a/src/components/script/dom/bindings/domparser.rs +++ b/src/components/script/dom/bindings/domparser.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::DOMParserBinding; -use dom::bindings::utils::{BindingObject, Reflectable, Reflector}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::domparser::DOMParser; use js::jsapi::{JSContext, JSObject}; @@ -20,9 +20,7 @@ impl Reflectable for DOMParser { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { DOMParserBinding::Wrap(cx, scope, self) } -} -impl BindingObject for DOMParser { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { Some(self.owner as @mut Reflectable) } diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 83e1667b149..949fc0e9852 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -4,7 +4,7 @@ use dom::types::*; use dom::bindings::codegen::*; -use dom::bindings::utils::{BindingObject, Reflector, Reflectable, Traceable}; +use dom::bindings::utils::{Reflectable, Reflector, Traceable}; use js::jsapi::{JSContext, JSObject, JSTracer}; @@ -53,45 +53,7 @@ macro_rules! generate_cacheable_wrapper_base( fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { $wrap(cx, scope, self) } - } - ) -) - -// generate_binding_object -macro_rules! generate_binding_object( - ($name: path) => ( - generate_binding_base!($name, element) - ) -) - -macro_rules! generate_binding_object_htmlelement( - ($name: path) => ( - generate_binding_base!($name, htmlelement) - ) -) - -macro_rules! generate_binding_object_htmlmediaelement( - ($name: path) => ( - generate_binding_base!($name, htmlmediaelement) - ) -) - -macro_rules! generate_binding_object_htmltablecellelement( - ($name: path) => ( - generate_binding_base!($name, htmltablecellelement) - ) -) - -macro_rules! generate_binding_object_node( - ($name: path) => ( - generate_binding_base!($name, node) - ) -) - -macro_rules! generate_binding_base( - ($name: path, $parent: ident) => ( - impl BindingObject for $name { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { self.$parent.GetParentObject(cx) } @@ -143,295 +105,221 @@ macro_rules! generate_traceable_base( generate_cacheable_wrapper!(Comment, CommentBinding::Wrap) -generate_binding_object!(Comment) generate_traceable!(Comment) generate_cacheable_wrapper_node!(DocumentFragment, DocumentFragmentBinding::Wrap) -generate_binding_object_node!(DocumentFragment) generate_traceable_node!(DocumentFragment) generate_cacheable_wrapper_node!(DocumentType, DocumentTypeBinding::Wrap) -generate_binding_object_node!(DocumentType) generate_traceable_node!(DocumentType) generate_cacheable_wrapper!(Text, TextBinding::Wrap) -generate_binding_object!(Text) generate_traceable!(Text) generate_cacheable_wrapper_htmlelement!(HTMLHeadElement, HTMLHeadElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLHeadElement) generate_traceable_htmlelement!(HTMLHeadElement) generate_cacheable_wrapper_htmlelement!(HTMLAnchorElement, HTMLAnchorElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLAnchorElement) generate_traceable_htmlelement!(HTMLAnchorElement) generate_cacheable_wrapper_htmlelement!(HTMLAppletElement, HTMLAppletElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLAppletElement) generate_traceable_htmlelement!(HTMLAppletElement) generate_cacheable_wrapper_htmlelement!(HTMLAreaElement, HTMLAreaElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLAreaElement) generate_traceable_htmlelement!(HTMLAreaElement) generate_cacheable_wrapper_htmlmediaelement!(HTMLAudioElement, HTMLAudioElementBinding::Wrap) -generate_binding_object_htmlmediaelement!(HTMLAudioElement) generate_traceable_htmlmediaelement!(HTMLAudioElement) generate_cacheable_wrapper_htmlelement!(HTMLBaseElement, HTMLBaseElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLBaseElement) generate_traceable_htmlelement!(HTMLBaseElement) generate_cacheable_wrapper_htmlelement!(HTMLBodyElement, HTMLBodyElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLBodyElement) generate_traceable_htmlelement!(HTMLBodyElement) generate_cacheable_wrapper_htmlelement!(HTMLButtonElement, HTMLButtonElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLButtonElement) generate_traceable_htmlelement!(HTMLButtonElement) generate_cacheable_wrapper_htmlelement!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLCanvasElement) generate_traceable_htmlelement!(HTMLCanvasElement) generate_cacheable_wrapper_htmlelement!(HTMLDataListElement, HTMLDataListElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLDataListElement) generate_traceable_htmlelement!(HTMLDataListElement) generate_cacheable_wrapper_htmlelement!(HTMLDListElement, HTMLDListElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLDListElement) generate_traceable_htmlelement!(HTMLDListElement) generate_cacheable_wrapper_htmlelement!(HTMLFormElement, HTMLFormElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLFormElement) generate_traceable_htmlelement!(HTMLFormElement) generate_cacheable_wrapper_htmlelement!(HTMLFrameElement, HTMLFrameElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLFrameElement) generate_traceable_htmlelement!(HTMLFrameElement) generate_cacheable_wrapper_htmlelement!(HTMLFrameSetElement, HTMLFrameSetElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLFrameSetElement) generate_traceable_htmlelement!(HTMLFrameSetElement) generate_cacheable_wrapper_htmlelement!(HTMLBRElement, HTMLBRElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLBRElement) generate_traceable_htmlelement!(HTMLBRElement) generate_cacheable_wrapper_htmlelement!(HTMLHRElement, HTMLHRElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLHRElement) generate_traceable_htmlelement!(HTMLHRElement) generate_cacheable_wrapper_htmlelement!(HTMLHtmlElement, HTMLHtmlElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLHtmlElement) generate_traceable_htmlelement!(HTMLHtmlElement) generate_cacheable_wrapper_htmlelement!(HTMLDataElement, HTMLDataElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLDataElement) generate_traceable_htmlelement!(HTMLDataElement) generate_cacheable_wrapper_htmlelement!(HTMLDirectoryElement, HTMLDirectoryElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLDirectoryElement) generate_traceable_htmlelement!(HTMLDirectoryElement) generate_cacheable_wrapper_htmlelement!(HTMLDivElement, HTMLDivElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLDivElement) generate_traceable_htmlelement!(HTMLDivElement) generate_cacheable_wrapper_htmlelement!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLEmbedElement) generate_traceable_htmlelement!(HTMLEmbedElement) generate_cacheable_wrapper_htmlelement!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLFieldSetElement) generate_traceable_htmlelement!(HTMLFieldSetElement) generate_cacheable_wrapper_htmlelement!(HTMLFontElement, HTMLFontElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLFontElement) generate_traceable_htmlelement!(HTMLFontElement) generate_cacheable_wrapper_htmlelement!(HTMLHeadingElement, HTMLHeadingElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLHeadingElement) generate_traceable_htmlelement!(HTMLHeadingElement) generate_cacheable_wrapper_htmlelement!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLIFrameElement) generate_traceable_htmlelement!(HTMLIFrameElement) generate_cacheable_wrapper_htmlelement!(HTMLImageElement, HTMLImageElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLImageElement) generate_traceable_htmlelement!(HTMLImageElement) generate_cacheable_wrapper_htmlelement!(HTMLInputElement, HTMLInputElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLInputElement) generate_traceable_htmlelement!(HTMLInputElement) generate_cacheable_wrapper_htmlelement!(HTMLLabelElement, HTMLLabelElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLLabelElement) generate_traceable_htmlelement!(HTMLLabelElement) generate_cacheable_wrapper_htmlelement!(HTMLLegendElement, HTMLLegendElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLLegendElement) generate_traceable_htmlelement!(HTMLLegendElement) generate_cacheable_wrapper_htmlelement!(HTMLLIElement, HTMLLIElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLLIElement) generate_traceable_htmlelement!(HTMLLIElement) generate_cacheable_wrapper_htmlelement!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLLinkElement) generate_traceable_htmlelement!(HTMLLinkElement) generate_cacheable_wrapper_htmlelement!(HTMLMapElement, HTMLMapElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLMapElement) generate_traceable_htmlelement!(HTMLMapElement) generate_cacheable_wrapper_htmlelement!(HTMLMediaElement, HTMLMediaElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLMediaElement) generate_traceable_htmlelement!(HTMLMediaElement) generate_cacheable_wrapper_htmlelement!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLMetaElement) generate_traceable_htmlelement!(HTMLMetaElement) generate_cacheable_wrapper_htmlelement!(HTMLMeterElement, HTMLMeterElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLMeterElement) generate_traceable_htmlelement!(HTMLMeterElement) generate_cacheable_wrapper_htmlelement!(HTMLModElement, HTMLModElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLModElement) generate_traceable_htmlelement!(HTMLModElement) generate_cacheable_wrapper_htmlelement!(HTMLObjectElement, HTMLObjectElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLObjectElement) generate_traceable_htmlelement!(HTMLObjectElement) generate_cacheable_wrapper_htmlelement!(HTMLOListElement, HTMLOListElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLOListElement) generate_traceable_htmlelement!(HTMLOListElement) generate_cacheable_wrapper_htmlelement!(HTMLOptGroupElement, HTMLOptGroupElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLOptGroupElement) generate_traceable_htmlelement!(HTMLOptGroupElement) generate_cacheable_wrapper_htmlelement!(HTMLOptionElement, HTMLOptionElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLOptionElement) generate_traceable_htmlelement!(HTMLOptionElement) generate_cacheable_wrapper_htmlelement!(HTMLOutputElement, HTMLOutputElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLOutputElement) generate_traceable_htmlelement!(HTMLOutputElement) generate_cacheable_wrapper_htmlelement!(HTMLParagraphElement, HTMLParagraphElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLParagraphElement) generate_traceable_htmlelement!(HTMLParagraphElement) generate_cacheable_wrapper_htmlelement!(HTMLParamElement, HTMLParamElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLParamElement) generate_traceable_htmlelement!(HTMLParamElement) generate_cacheable_wrapper_htmlelement!(HTMLPreElement, HTMLPreElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLPreElement) generate_traceable_htmlelement!(HTMLPreElement) generate_cacheable_wrapper_htmlelement!(HTMLProgressElement, HTMLProgressElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLProgressElement) generate_traceable_htmlelement!(HTMLProgressElement) generate_cacheable_wrapper_htmlelement!(HTMLQuoteElement, HTMLQuoteElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLQuoteElement) generate_traceable_htmlelement!(HTMLQuoteElement) generate_cacheable_wrapper_htmlelement!(HTMLScriptElement, HTMLScriptElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLScriptElement) generate_traceable_htmlelement!(HTMLScriptElement) generate_cacheable_wrapper_htmlelement!(HTMLSelectElement, HTMLSelectElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLSelectElement) generate_traceable_htmlelement!(HTMLSelectElement) generate_cacheable_wrapper_htmlelement!(HTMLSourceElement, HTMLSourceElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLSourceElement) generate_traceable_htmlelement!(HTMLSourceElement) generate_cacheable_wrapper_htmlelement!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLSpanElement) generate_traceable_htmlelement!(HTMLSpanElement) generate_cacheable_wrapper_htmlelement!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLStyleElement) generate_traceable_htmlelement!(HTMLStyleElement) generate_cacheable_wrapper_htmlelement!(HTMLTableElement, HTMLTableElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableElement) generate_traceable_htmlelement!(HTMLTableElement) generate_cacheable_wrapper_htmlelement!(HTMLTableCaptionElement, HTMLTableCaptionElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableCaptionElement) generate_traceable_htmlelement!(HTMLTableCaptionElement) generate_cacheable_wrapper_htmlelement!(HTMLTableCellElement, HTMLTableCellElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableCellElement) generate_traceable_htmlelement!(HTMLTableCellElement) generate_cacheable_wrapper_htmltablecellelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap) -generate_binding_object_htmltablecellelement!(HTMLTableDataCellElement) generate_traceable_htmltablecellelement!(HTMLTableDataCellElement) generate_cacheable_wrapper_htmltablecellelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap) -generate_binding_object_htmltablecellelement!(HTMLTableHeaderCellElement) generate_traceable_htmltablecellelement!(HTMLTableHeaderCellElement) generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableColElement) generate_traceable_htmlelement!(HTMLTableColElement) generate_cacheable_wrapper_htmlelement!(HTMLTableRowElement, HTMLTableRowElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableRowElement) generate_traceable_htmlelement!(HTMLTableRowElement) generate_cacheable_wrapper_htmlelement!(HTMLTableSectionElement, HTMLTableSectionElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTableSectionElement) generate_traceable_htmlelement!(HTMLTableSectionElement) generate_cacheable_wrapper_htmlelement!(HTMLTemplateElement, HTMLTemplateElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTemplateElement) generate_traceable_htmlelement!(HTMLTemplateElement) generate_cacheable_wrapper_htmlelement!(HTMLTextAreaElement, HTMLTextAreaElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTextAreaElement) generate_traceable_htmlelement!(HTMLTextAreaElement) generate_cacheable_wrapper_htmlelement!(HTMLTitleElement, HTMLTitleElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTitleElement) generate_traceable_htmlelement!(HTMLTitleElement) generate_cacheable_wrapper_htmlelement!(HTMLTimeElement, HTMLTimeElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTimeElement) generate_traceable_htmlelement!(HTMLTimeElement) generate_cacheable_wrapper_htmlelement!(HTMLTrackElement, HTMLTrackElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLTrackElement) generate_traceable_htmlelement!(HTMLTrackElement) generate_cacheable_wrapper_htmlelement!(HTMLUListElement, HTMLUListElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLUListElement) generate_traceable_htmlelement!(HTMLUListElement) generate_cacheable_wrapper_htmlelement!(HTMLUnknownElement, HTMLUnknownElementBinding::Wrap) -generate_binding_object_htmlelement!(HTMLUnknownElement) generate_traceable_htmlelement!(HTMLUnknownElement) generate_cacheable_wrapper_htmlmediaelement!(HTMLVideoElement, HTMLVideoElementBinding::Wrap) -generate_binding_object_htmlmediaelement!(HTMLVideoElement) generate_traceable_htmlmediaelement!(HTMLVideoElement) generate_cacheable_wrapper!(HTMLElement, HTMLElementBinding::Wrap) -generate_binding_object!(HTMLElement) generate_traceable!(HTMLElement) -generate_binding_object_node!(Element) generate_traceable_node!(Element) -generate_binding_object_node!(CharacterData) generate_traceable_node!(CharacterData) diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index a036689a375..ac467a9a5c2 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -114,6 +114,12 @@ impl Reflectable for AbstractNode<ScriptView> { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"need to implement wrapping"); } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + do self.with_mut_base |base| { + base.GetParentObject(cx) + } + } } impl Traceable for Node<ScriptView> { diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 0beb98d61c0..87fa9477e52 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -541,6 +541,7 @@ pub trait Reflectable { fn reflector<'a>(&'a self) -> &'a Reflector; fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector; fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject; + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable>; } pub struct Reflector { @@ -607,10 +608,6 @@ pub fn WrapNativeParent(cx: *JSContext, scope: *JSObject, mut p: Option<@mut Ref } } -pub trait BindingObject { - fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable>; -} - #[fixed_stack_segment] pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool, vp: *JSVal) -> bool { diff --git a/src/components/script/dom/blob.rs b/src/components/script/dom/blob.rs index ccac0a702af..3d17c44bc26 100644 --- a/src/components/script/dom/blob.rs +++ b/src/components/script/dom/blob.rs @@ -2,7 +2,7 @@ * 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::bindings::utils::{Reflector, BindingObject, Reflectable}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::codegen::BlobBinding; use script_task::{page_from_context}; @@ -32,9 +32,7 @@ impl Reflectable for Blob { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { BlobBinding::Wrap(cx, scope, self) } -} -impl BindingObject for Blob { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index 064a4976a16..d93d8faa534 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -70,4 +70,8 @@ impl Reflectable for CharacterData { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"need to implement wrapping"); } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + self.node.GetParentObject(cx) + } } diff --git a/src/components/script/dom/clientrect.rs b/src/components/script/dom/clientrect.rs index 543ea2a5f88..2c76bada0d2 100644 --- a/src/components/script/dom/clientrect.rs +++ b/src/components/script/dom/clientrect.rs @@ -2,7 +2,7 @@ * 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::bindings::utils::{Reflectable, Reflector, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::codegen::ClientRectBinding; use script_task::page_from_context; @@ -70,9 +70,7 @@ impl Reflectable for ClientRect { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { ClientRectBinding::Wrap(cx, scope, self) } -} -impl BindingObject for ClientRect { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/clientrectlist.rs b/src/components/script/dom/clientrectlist.rs index 47c1538b7ed..1c6b7870fd6 100644 --- a/src/components/script/dom/clientrectlist.rs +++ b/src/components/script/dom/clientrectlist.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::ClientRectListBinding; -use dom::bindings::utils::{Reflector, Reflectable, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::clientrect::ClientRect; use script_task::page_from_context; @@ -58,9 +58,7 @@ impl Reflectable for ClientRectList { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { ClientRectListBinding::Wrap(cx, scope, self) } -} -impl BindingObject for ClientRectList { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 26a9c7a88a9..931221cabe0 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -4,8 +4,8 @@ use dom::comment::Comment; use dom::bindings::codegen::DocumentBinding; -use dom::bindings::utils::{DOMString, Reflector, ErrorResult, Fallible}; -use dom::bindings::utils::{BindingObject, Reflectable, DerivedWrapper}; +use dom::bindings::utils::{DOMString, ErrorResult, Fallible}; +use dom::bindings::utils::{Reflectable, Reflector, DerivedWrapper}; use dom::bindings::utils::{is_valid_element_name, InvalidCharacter, Traceable, null_str_as_empty, null_str_as_word_null}; use dom::documentfragment::DocumentFragment; use dom::element::{Element}; @@ -176,9 +176,7 @@ impl Reflectable for AbstractDocument { } } } -} -impl BindingObject for AbstractDocument { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { do self.with_mut_base |doc| { doc.GetParentObject(cx) @@ -207,9 +205,7 @@ impl Reflectable for Document { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { DocumentBinding::Wrap(cx, scope, self) } -} -impl BindingObject for Document { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { Some(self.window as @mut Reflectable) } diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 3c4f7e9d9b4..3f0e77a4e4c 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -42,6 +42,10 @@ impl Reflectable for Element { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!("no wrapping") } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + self.node.GetParentObject(cx) + } } #[deriving(Eq)] diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index 2f5f8a96fd7..00bf6868e43 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -5,8 +5,8 @@ use dom::eventtarget::EventTarget; use dom::window::Window; use dom::bindings::codegen::EventBinding; -use dom::bindings::utils::{Reflectable, BindingObject}; -use dom::bindings::utils::{DOMString, ErrorResult, Fallible, Reflector}; +use dom::bindings::utils::{Reflectable, Reflector}; +use dom::bindings::utils::{DOMString, ErrorResult, Fallible}; use geom::point::Point2D; use js::jsapi::{JSObject, JSContext}; @@ -121,9 +121,7 @@ impl Reflectable for Event { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { EventBinding::Wrap(cx, scope, self) } -} -impl BindingObject for Event { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index 73d8867e144..35a1fe6e6cc 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::EventTargetBinding; -use dom::bindings::utils::{Reflectable, Reflector, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use script_task::page_from_context; use js::jsapi::{JSObject, JSContext}; @@ -36,9 +36,7 @@ impl Reflectable for EventTarget { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { EventTargetBinding::Wrap(cx, scope, self) } -} -impl BindingObject for EventTarget { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); // TODO(tkuehn): This only handles top-level pages. Needs to handle subframes. diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index 0a3917dfca0..e961f3fd2fa 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -2,8 +2,8 @@ * 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::bindings::utils::{Reflectable, BindingObject}; -use dom::bindings::utils::{Reflector, DOMString, null_str_as_empty}; +use dom::bindings::utils::{Reflectable, Reflector}; +use dom::bindings::utils::{DOMString, null_str_as_empty}; use dom::bindings::codegen::FormDataBinding; use dom::blob::Blob; use script_task::{page_from_context}; @@ -59,9 +59,7 @@ impl Reflectable for FormData { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { FormDataBinding::Wrap(cx, scope, self) } -} -impl BindingObject for FormData { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/htmlcollection.rs b/src/components/script/dom/htmlcollection.rs index e76e65c4a66..1f26eaaff95 100644 --- a/src/components/script/dom/htmlcollection.rs +++ b/src/components/script/dom/htmlcollection.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::HTMLCollectionBinding; -use dom::bindings::utils::{Reflectable, BindingObject, Reflector}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{DOMString, Fallible}; use dom::node::{AbstractNode, ScriptView}; use script_task::page_from_context; @@ -57,16 +57,6 @@ impl HTMLCollection { } } -impl BindingObject for HTMLCollection { - fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { - let page = page_from_context(cx); - // TODO(tkuehn): This only handles the top-level frame. Need to grab subframes. - unsafe { - Some((*page).frame.get_ref().window as @mut Reflectable) - } - } -} - impl Reflectable for HTMLCollection { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ @@ -79,4 +69,12 @@ impl Reflectable for HTMLCollection { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { HTMLCollectionBinding::Wrap(cx, scope, self) } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + let page = page_from_context(cx); + // TODO(tkuehn): This only handles the top-level frame. Need to grab subframes. + unsafe { + Some((*page).frame.get_ref().window as @mut Reflectable) + } + } } diff --git a/src/components/script/dom/htmldocument.rs b/src/components/script/dom/htmldocument.rs index 7acd47bc154..caf54316aae 100644 --- a/src/components/script/dom/htmldocument.rs +++ b/src/components/script/dom/htmldocument.rs @@ -4,7 +4,7 @@ use dom::bindings::codegen::HTMLDocumentBinding; use dom::bindings::utils::{DOMString, ErrorResult, Fallible, Traceable}; -use dom::bindings::utils::{Reflectable, BindingObject, Reflector}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::document::{AbstractDocument, Document, ReflectableDocument, HTML}; use dom::element::HTMLHeadElementTypeId; use dom::htmlcollection::HTMLCollection; @@ -196,9 +196,7 @@ impl Reflectable for HTMLDocument { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { HTMLDocumentBinding::Wrap(cx, scope, self) } -} -impl BindingObject for HTMLDocument { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { self.parent.GetParentObject(cx) } diff --git a/src/components/script/dom/mouseevent.rs b/src/components/script/dom/mouseevent.rs index e8e52be7939..ffe871b6485 100644 --- a/src/components/script/dom/mouseevent.rs +++ b/src/components/script/dom/mouseevent.rs @@ -4,7 +4,7 @@ use dom::bindings::codegen::MouseEventBinding; use dom::bindings::utils::{ErrorResult, Fallible, DOMString}; -use dom::bindings::utils::{Reflectable, Reflector, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::eventtarget::EventTarget; use dom::uievent::UIEvent; use dom::window::Window; @@ -153,9 +153,7 @@ impl Reflectable for MouseEvent { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { MouseEventBinding::Wrap(cx, scope, self) } -} -impl BindingObject for MouseEvent { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { self.parent.GetParentObject(cx) } diff --git a/src/components/script/dom/navigator.rs b/src/components/script/dom/navigator.rs index 69db9f18453..99b75a39030 100644 --- a/src/components/script/dom/navigator.rs +++ b/src/components/script/dom/navigator.rs @@ -2,7 +2,7 @@ * 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::bindings::utils::{Reflector, BindingObject, Reflectable}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{DOMString, Fallible}; use dom::bindings::codegen::NavigatorBinding; use script_task::{page_from_context}; @@ -97,9 +97,7 @@ impl Reflectable for Navigator { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { NavigatorBinding::Wrap(cx, scope, self) } -} -impl BindingObject for Navigator { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { let page = page_from_context(cx); unsafe { diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 292c54aa7d1..d0b0ec81671 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -5,8 +5,9 @@ //! The core DOM types. Defines the basic DOM hierarchy as well as all the HTML elements. use dom::bindings::node; -use dom::bindings::utils::{Reflector, DOMString, ErrorResult, Fallible, NotFound, HierarchyRequest}; -use dom::bindings::utils::{BindingObject, Reflectable, null_str_as_empty}; +use dom::bindings::utils::{Reflectable, Reflector}; +use dom::bindings::utils::{DOMString, null_str_as_empty}; +use dom::bindings::utils::{ErrorResult, Fallible, NotFound, HierarchyRequest}; use dom::characterdata::CharacterData; use dom::document::AbstractDocument; use dom::documenttype::DocumentType; @@ -901,9 +902,7 @@ impl Reflectable for Node<ScriptView> { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"need to implement wrapping"); } -} -impl BindingObject for Node<ScriptView> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { match self.parent_node { Some(node) => Some(unsafe {node.as_cacheable_wrapper()}), diff --git a/src/components/script/dom/nodelist.rs b/src/components/script/dom/nodelist.rs index 47a9c527972..768331384c9 100644 --- a/src/components/script/dom/nodelist.rs +++ b/src/components/script/dom/nodelist.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::NodeListBinding; -use dom::bindings::utils::{Reflectable, BindingObject, Reflector}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::node::{AbstractNode, ScriptView}; use script_task::page_from_context; @@ -66,15 +66,6 @@ impl NodeList { } } -impl BindingObject for NodeList { - fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { - let page = page_from_context(cx); - unsafe { - Some((*page).frame.get_ref().window as @mut Reflectable) - } - } -} - impl Reflectable for NodeList { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ @@ -87,4 +78,11 @@ impl Reflectable for NodeList { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { NodeListBinding::Wrap(cx, scope, self) } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + let page = page_from_context(cx); + unsafe { + Some((*page).frame.get_ref().window as @mut Reflectable) + } + } } diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs index 5f1b8b175ba..d049be1f55e 100644 --- a/src/components/script/dom/uievent.rs +++ b/src/components/script/dom/uievent.rs @@ -4,7 +4,7 @@ use dom::bindings::codegen::UIEventBinding; use dom::bindings::utils::{DOMString, Fallible}; -use dom::bindings::utils::{Reflectable, Reflector, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::node::{AbstractNode, ScriptView}; use dom::event::Event; use dom::window::Window; @@ -126,9 +126,7 @@ impl Reflectable for UIEvent { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { UIEventBinding::Wrap(cx, scope, self) } -} -impl BindingObject for UIEvent { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { self.parent.GetParentObject(cx) } diff --git a/src/components/script/dom/validitystate.rs b/src/components/script/dom/validitystate.rs index 523c2a0cb01..20c0cf211b0 100644 --- a/src/components/script/dom/validitystate.rs +++ b/src/components/script/dom/validitystate.rs @@ -2,7 +2,7 @@ * 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::bindings::utils::{Reflector, BindingObject, Reflectable}; +use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::codegen::ValidityStateBinding; use js::jsapi::{JSContext, JSObject}; @@ -70,9 +70,7 @@ impl Reflectable for ValidityState { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { ValidityStateBinding::Wrap(cx, scope, self) } -} -impl BindingObject for ValidityState { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { None } diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index f13d767e8e1..82d098d9b22 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -3,8 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::WindowBinding; -use dom::bindings::utils::{Reflector, DOMString, Traceable}; -use dom::bindings::utils::{Reflectable, BindingObject, null_str_as_empty}; +use dom::bindings::utils::{Reflectable, Reflector}; +use dom::bindings::utils::{DOMString, null_str_as_empty, Traceable}; use dom::document::AbstractDocument; use dom::node::{AbstractNode, ScriptView}; use dom::navigator::Navigator; @@ -152,9 +152,7 @@ impl Reflectable for Window { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { WindowBinding::Wrap(cx, scope, self) } -} -impl BindingObject for Window { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { None } diff --git a/src/components/script/dom/windowproxy.rs b/src/components/script/dom/windowproxy.rs index 235facca913..b5ff91f1c0d 100644 --- a/src/components/script/dom/windowproxy.rs +++ b/src/components/script/dom/windowproxy.rs @@ -2,7 +2,7 @@ * 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::bindings::utils::{Reflectable, Reflector, BindingObject}; +use dom::bindings::utils::{Reflectable, Reflector}; use script_task::page_from_context; use js::jsapi::{JSContext, JSObject}; @@ -23,15 +23,6 @@ impl WindowProxy { } } -impl BindingObject for WindowProxy { - fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { - let page = page_from_context(cx); - unsafe { - Some((*page).frame.get_ref().window as @mut Reflectable) - } - } -} - impl Reflectable for WindowProxy { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ @@ -44,4 +35,11 @@ impl Reflectable for WindowProxy { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!("not yet implemented") } + + fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { + let page = page_from_context(cx); + unsafe { + Some((*page).frame.get_ref().window as @mut Reflectable) + } + } } |