Merge BindingObject and Reflectable.

This commit is contained in:
Ms2ger 2013-10-18 17:02:16 +02:00
parent f585d218cb
commit 321e0373fa
23 changed files with 62 additions and 200 deletions

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::DOMParserBinding; use dom::bindings::codegen::DOMParserBinding;
use dom::bindings::utils::{BindingObject, Reflectable, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::domparser::DOMParser; use dom::domparser::DOMParser;
use js::jsapi::{JSContext, JSObject}; use js::jsapi::{JSContext, JSObject};
@ -20,9 +20,7 @@ impl Reflectable for DOMParser {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
DOMParserBinding::Wrap(cx, scope, self) DOMParserBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for DOMParser {
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
Some(self.owner as @mut Reflectable) Some(self.owner as @mut Reflectable)
} }

View file

@ -4,7 +4,7 @@
use dom::types::*; use dom::types::*;
use dom::bindings::codegen::*; 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}; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
$wrap(cx, scope, self) $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> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.$parent.GetParentObject(cx) self.$parent.GetParentObject(cx)
} }
@ -143,295 +105,221 @@ macro_rules! generate_traceable_base(
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap) generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
generate_binding_object!(Comment)
generate_traceable!(Comment) generate_traceable!(Comment)
generate_cacheable_wrapper_node!(DocumentFragment, DocumentFragmentBinding::Wrap) generate_cacheable_wrapper_node!(DocumentFragment, DocumentFragmentBinding::Wrap)
generate_binding_object_node!(DocumentFragment)
generate_traceable_node!(DocumentFragment) generate_traceable_node!(DocumentFragment)
generate_cacheable_wrapper_node!(DocumentType, DocumentTypeBinding::Wrap) generate_cacheable_wrapper_node!(DocumentType, DocumentTypeBinding::Wrap)
generate_binding_object_node!(DocumentType)
generate_traceable_node!(DocumentType) generate_traceable_node!(DocumentType)
generate_cacheable_wrapper!(Text, TextBinding::Wrap) generate_cacheable_wrapper!(Text, TextBinding::Wrap)
generate_binding_object!(Text)
generate_traceable!(Text) generate_traceable!(Text)
generate_cacheable_wrapper_htmlelement!(HTMLHeadElement, HTMLHeadElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLHeadElement, HTMLHeadElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLHeadElement)
generate_traceable_htmlelement!(HTMLHeadElement) generate_traceable_htmlelement!(HTMLHeadElement)
generate_cacheable_wrapper_htmlelement!(HTMLAnchorElement, HTMLAnchorElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLAnchorElement, HTMLAnchorElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLAnchorElement)
generate_traceable_htmlelement!(HTMLAnchorElement) generate_traceable_htmlelement!(HTMLAnchorElement)
generate_cacheable_wrapper_htmlelement!(HTMLAppletElement, HTMLAppletElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLAppletElement, HTMLAppletElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLAppletElement)
generate_traceable_htmlelement!(HTMLAppletElement) generate_traceable_htmlelement!(HTMLAppletElement)
generate_cacheable_wrapper_htmlelement!(HTMLAreaElement, HTMLAreaElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLAreaElement, HTMLAreaElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLAreaElement)
generate_traceable_htmlelement!(HTMLAreaElement) generate_traceable_htmlelement!(HTMLAreaElement)
generate_cacheable_wrapper_htmlmediaelement!(HTMLAudioElement, HTMLAudioElementBinding::Wrap) generate_cacheable_wrapper_htmlmediaelement!(HTMLAudioElement, HTMLAudioElementBinding::Wrap)
generate_binding_object_htmlmediaelement!(HTMLAudioElement)
generate_traceable_htmlmediaelement!(HTMLAudioElement) generate_traceable_htmlmediaelement!(HTMLAudioElement)
generate_cacheable_wrapper_htmlelement!(HTMLBaseElement, HTMLBaseElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLBaseElement, HTMLBaseElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLBaseElement)
generate_traceable_htmlelement!(HTMLBaseElement) generate_traceable_htmlelement!(HTMLBaseElement)
generate_cacheable_wrapper_htmlelement!(HTMLBodyElement, HTMLBodyElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLBodyElement, HTMLBodyElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLBodyElement)
generate_traceable_htmlelement!(HTMLBodyElement) generate_traceable_htmlelement!(HTMLBodyElement)
generate_cacheable_wrapper_htmlelement!(HTMLButtonElement, HTMLButtonElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLButtonElement, HTMLButtonElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLButtonElement)
generate_traceable_htmlelement!(HTMLButtonElement) generate_traceable_htmlelement!(HTMLButtonElement)
generate_cacheable_wrapper_htmlelement!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLCanvasElement, HTMLCanvasElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLCanvasElement)
generate_traceable_htmlelement!(HTMLCanvasElement) generate_traceable_htmlelement!(HTMLCanvasElement)
generate_cacheable_wrapper_htmlelement!(HTMLDataListElement, HTMLDataListElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLDataListElement, HTMLDataListElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLDataListElement)
generate_traceable_htmlelement!(HTMLDataListElement) generate_traceable_htmlelement!(HTMLDataListElement)
generate_cacheable_wrapper_htmlelement!(HTMLDListElement, HTMLDListElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLDListElement, HTMLDListElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLDListElement)
generate_traceable_htmlelement!(HTMLDListElement) generate_traceable_htmlelement!(HTMLDListElement)
generate_cacheable_wrapper_htmlelement!(HTMLFormElement, HTMLFormElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLFormElement, HTMLFormElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLFormElement)
generate_traceable_htmlelement!(HTMLFormElement) generate_traceable_htmlelement!(HTMLFormElement)
generate_cacheable_wrapper_htmlelement!(HTMLFrameElement, HTMLFrameElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLFrameElement, HTMLFrameElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLFrameElement)
generate_traceable_htmlelement!(HTMLFrameElement) generate_traceable_htmlelement!(HTMLFrameElement)
generate_cacheable_wrapper_htmlelement!(HTMLFrameSetElement, HTMLFrameSetElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLFrameSetElement, HTMLFrameSetElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLFrameSetElement)
generate_traceable_htmlelement!(HTMLFrameSetElement) generate_traceable_htmlelement!(HTMLFrameSetElement)
generate_cacheable_wrapper_htmlelement!(HTMLBRElement, HTMLBRElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLBRElement, HTMLBRElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLBRElement)
generate_traceable_htmlelement!(HTMLBRElement) generate_traceable_htmlelement!(HTMLBRElement)
generate_cacheable_wrapper_htmlelement!(HTMLHRElement, HTMLHRElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLHRElement, HTMLHRElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLHRElement)
generate_traceable_htmlelement!(HTMLHRElement) generate_traceable_htmlelement!(HTMLHRElement)
generate_cacheable_wrapper_htmlelement!(HTMLHtmlElement, HTMLHtmlElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLHtmlElement, HTMLHtmlElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLHtmlElement)
generate_traceable_htmlelement!(HTMLHtmlElement) generate_traceable_htmlelement!(HTMLHtmlElement)
generate_cacheable_wrapper_htmlelement!(HTMLDataElement, HTMLDataElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLDataElement, HTMLDataElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLDataElement)
generate_traceable_htmlelement!(HTMLDataElement) generate_traceable_htmlelement!(HTMLDataElement)
generate_cacheable_wrapper_htmlelement!(HTMLDirectoryElement, HTMLDirectoryElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLDirectoryElement, HTMLDirectoryElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLDirectoryElement)
generate_traceable_htmlelement!(HTMLDirectoryElement) generate_traceable_htmlelement!(HTMLDirectoryElement)
generate_cacheable_wrapper_htmlelement!(HTMLDivElement, HTMLDivElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLDivElement, HTMLDivElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLDivElement)
generate_traceable_htmlelement!(HTMLDivElement) generate_traceable_htmlelement!(HTMLDivElement)
generate_cacheable_wrapper_htmlelement!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLEmbedElement, HTMLEmbedElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLEmbedElement)
generate_traceable_htmlelement!(HTMLEmbedElement) generate_traceable_htmlelement!(HTMLEmbedElement)
generate_cacheable_wrapper_htmlelement!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLFieldSetElement, HTMLFieldSetElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLFieldSetElement)
generate_traceable_htmlelement!(HTMLFieldSetElement) generate_traceable_htmlelement!(HTMLFieldSetElement)
generate_cacheable_wrapper_htmlelement!(HTMLFontElement, HTMLFontElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLFontElement, HTMLFontElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLFontElement)
generate_traceable_htmlelement!(HTMLFontElement) generate_traceable_htmlelement!(HTMLFontElement)
generate_cacheable_wrapper_htmlelement!(HTMLHeadingElement, HTMLHeadingElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLHeadingElement, HTMLHeadingElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLHeadingElement)
generate_traceable_htmlelement!(HTMLHeadingElement) generate_traceable_htmlelement!(HTMLHeadingElement)
generate_cacheable_wrapper_htmlelement!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLIFrameElement, HTMLIFrameElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLIFrameElement)
generate_traceable_htmlelement!(HTMLIFrameElement) generate_traceable_htmlelement!(HTMLIFrameElement)
generate_cacheable_wrapper_htmlelement!(HTMLImageElement, HTMLImageElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLImageElement, HTMLImageElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLImageElement)
generate_traceable_htmlelement!(HTMLImageElement) generate_traceable_htmlelement!(HTMLImageElement)
generate_cacheable_wrapper_htmlelement!(HTMLInputElement, HTMLInputElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLInputElement, HTMLInputElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLInputElement)
generate_traceable_htmlelement!(HTMLInputElement) generate_traceable_htmlelement!(HTMLInputElement)
generate_cacheable_wrapper_htmlelement!(HTMLLabelElement, HTMLLabelElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLLabelElement, HTMLLabelElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLLabelElement)
generate_traceable_htmlelement!(HTMLLabelElement) generate_traceable_htmlelement!(HTMLLabelElement)
generate_cacheable_wrapper_htmlelement!(HTMLLegendElement, HTMLLegendElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLLegendElement, HTMLLegendElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLLegendElement)
generate_traceable_htmlelement!(HTMLLegendElement) generate_traceable_htmlelement!(HTMLLegendElement)
generate_cacheable_wrapper_htmlelement!(HTMLLIElement, HTMLLIElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLLIElement, HTMLLIElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLLIElement)
generate_traceable_htmlelement!(HTMLLIElement) generate_traceable_htmlelement!(HTMLLIElement)
generate_cacheable_wrapper_htmlelement!(HTMLLinkElement, HTMLLinkElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLLinkElement, HTMLLinkElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLLinkElement)
generate_traceable_htmlelement!(HTMLLinkElement) generate_traceable_htmlelement!(HTMLLinkElement)
generate_cacheable_wrapper_htmlelement!(HTMLMapElement, HTMLMapElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLMapElement, HTMLMapElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLMapElement)
generate_traceable_htmlelement!(HTMLMapElement) generate_traceable_htmlelement!(HTMLMapElement)
generate_cacheable_wrapper_htmlelement!(HTMLMediaElement, HTMLMediaElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLMediaElement, HTMLMediaElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLMediaElement)
generate_traceable_htmlelement!(HTMLMediaElement) generate_traceable_htmlelement!(HTMLMediaElement)
generate_cacheable_wrapper_htmlelement!(HTMLMetaElement, HTMLMetaElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLMetaElement, HTMLMetaElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLMetaElement)
generate_traceable_htmlelement!(HTMLMetaElement) generate_traceable_htmlelement!(HTMLMetaElement)
generate_cacheable_wrapper_htmlelement!(HTMLMeterElement, HTMLMeterElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLMeterElement, HTMLMeterElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLMeterElement)
generate_traceable_htmlelement!(HTMLMeterElement) generate_traceable_htmlelement!(HTMLMeterElement)
generate_cacheable_wrapper_htmlelement!(HTMLModElement, HTMLModElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLModElement, HTMLModElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLModElement)
generate_traceable_htmlelement!(HTMLModElement) generate_traceable_htmlelement!(HTMLModElement)
generate_cacheable_wrapper_htmlelement!(HTMLObjectElement, HTMLObjectElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLObjectElement, HTMLObjectElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLObjectElement)
generate_traceable_htmlelement!(HTMLObjectElement) generate_traceable_htmlelement!(HTMLObjectElement)
generate_cacheable_wrapper_htmlelement!(HTMLOListElement, HTMLOListElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLOListElement, HTMLOListElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLOListElement)
generate_traceable_htmlelement!(HTMLOListElement) generate_traceable_htmlelement!(HTMLOListElement)
generate_cacheable_wrapper_htmlelement!(HTMLOptGroupElement, HTMLOptGroupElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLOptGroupElement, HTMLOptGroupElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLOptGroupElement)
generate_traceable_htmlelement!(HTMLOptGroupElement) generate_traceable_htmlelement!(HTMLOptGroupElement)
generate_cacheable_wrapper_htmlelement!(HTMLOptionElement, HTMLOptionElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLOptionElement, HTMLOptionElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLOptionElement)
generate_traceable_htmlelement!(HTMLOptionElement) generate_traceable_htmlelement!(HTMLOptionElement)
generate_cacheable_wrapper_htmlelement!(HTMLOutputElement, HTMLOutputElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLOutputElement, HTMLOutputElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLOutputElement)
generate_traceable_htmlelement!(HTMLOutputElement) generate_traceable_htmlelement!(HTMLOutputElement)
generate_cacheable_wrapper_htmlelement!(HTMLParagraphElement, HTMLParagraphElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLParagraphElement, HTMLParagraphElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLParagraphElement)
generate_traceable_htmlelement!(HTMLParagraphElement) generate_traceable_htmlelement!(HTMLParagraphElement)
generate_cacheable_wrapper_htmlelement!(HTMLParamElement, HTMLParamElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLParamElement, HTMLParamElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLParamElement)
generate_traceable_htmlelement!(HTMLParamElement) generate_traceable_htmlelement!(HTMLParamElement)
generate_cacheable_wrapper_htmlelement!(HTMLPreElement, HTMLPreElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLPreElement, HTMLPreElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLPreElement)
generate_traceable_htmlelement!(HTMLPreElement) generate_traceable_htmlelement!(HTMLPreElement)
generate_cacheable_wrapper_htmlelement!(HTMLProgressElement, HTMLProgressElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLProgressElement, HTMLProgressElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLProgressElement)
generate_traceable_htmlelement!(HTMLProgressElement) generate_traceable_htmlelement!(HTMLProgressElement)
generate_cacheable_wrapper_htmlelement!(HTMLQuoteElement, HTMLQuoteElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLQuoteElement, HTMLQuoteElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLQuoteElement)
generate_traceable_htmlelement!(HTMLQuoteElement) generate_traceable_htmlelement!(HTMLQuoteElement)
generate_cacheable_wrapper_htmlelement!(HTMLScriptElement, HTMLScriptElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLScriptElement, HTMLScriptElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLScriptElement)
generate_traceable_htmlelement!(HTMLScriptElement) generate_traceable_htmlelement!(HTMLScriptElement)
generate_cacheable_wrapper_htmlelement!(HTMLSelectElement, HTMLSelectElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLSelectElement, HTMLSelectElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLSelectElement)
generate_traceable_htmlelement!(HTMLSelectElement) generate_traceable_htmlelement!(HTMLSelectElement)
generate_cacheable_wrapper_htmlelement!(HTMLSourceElement, HTMLSourceElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLSourceElement, HTMLSourceElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLSourceElement)
generate_traceable_htmlelement!(HTMLSourceElement) generate_traceable_htmlelement!(HTMLSourceElement)
generate_cacheable_wrapper_htmlelement!(HTMLSpanElement, HTMLSpanElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLSpanElement, HTMLSpanElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLSpanElement)
generate_traceable_htmlelement!(HTMLSpanElement) generate_traceable_htmlelement!(HTMLSpanElement)
generate_cacheable_wrapper_htmlelement!(HTMLStyleElement, HTMLStyleElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLStyleElement, HTMLStyleElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLStyleElement)
generate_traceable_htmlelement!(HTMLStyleElement) generate_traceable_htmlelement!(HTMLStyleElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableElement, HTMLTableElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableElement, HTMLTableElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableElement)
generate_traceable_htmlelement!(HTMLTableElement) generate_traceable_htmlelement!(HTMLTableElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableCaptionElement, HTMLTableCaptionElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableCaptionElement, HTMLTableCaptionElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableCaptionElement)
generate_traceable_htmlelement!(HTMLTableCaptionElement) generate_traceable_htmlelement!(HTMLTableCaptionElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableCellElement, HTMLTableCellElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableCellElement, HTMLTableCellElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableCellElement)
generate_traceable_htmlelement!(HTMLTableCellElement) generate_traceable_htmlelement!(HTMLTableCellElement)
generate_cacheable_wrapper_htmltablecellelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap) generate_cacheable_wrapper_htmltablecellelement!(HTMLTableDataCellElement, HTMLTableDataCellElementBinding::Wrap)
generate_binding_object_htmltablecellelement!(HTMLTableDataCellElement)
generate_traceable_htmltablecellelement!(HTMLTableDataCellElement) generate_traceable_htmltablecellelement!(HTMLTableDataCellElement)
generate_cacheable_wrapper_htmltablecellelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap) generate_cacheable_wrapper_htmltablecellelement!(HTMLTableHeaderCellElement, HTMLTableHeaderCellElementBinding::Wrap)
generate_binding_object_htmltablecellelement!(HTMLTableHeaderCellElement)
generate_traceable_htmltablecellelement!(HTMLTableHeaderCellElement) generate_traceable_htmltablecellelement!(HTMLTableHeaderCellElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableColElement, HTMLTableColElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableColElement)
generate_traceable_htmlelement!(HTMLTableColElement) generate_traceable_htmlelement!(HTMLTableColElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableRowElement, HTMLTableRowElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableRowElement, HTMLTableRowElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableRowElement)
generate_traceable_htmlelement!(HTMLTableRowElement) generate_traceable_htmlelement!(HTMLTableRowElement)
generate_cacheable_wrapper_htmlelement!(HTMLTableSectionElement, HTMLTableSectionElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTableSectionElement, HTMLTableSectionElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTableSectionElement)
generate_traceable_htmlelement!(HTMLTableSectionElement) generate_traceable_htmlelement!(HTMLTableSectionElement)
generate_cacheable_wrapper_htmlelement!(HTMLTemplateElement, HTMLTemplateElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTemplateElement, HTMLTemplateElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTemplateElement)
generate_traceable_htmlelement!(HTMLTemplateElement) generate_traceable_htmlelement!(HTMLTemplateElement)
generate_cacheable_wrapper_htmlelement!(HTMLTextAreaElement, HTMLTextAreaElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTextAreaElement, HTMLTextAreaElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTextAreaElement)
generate_traceable_htmlelement!(HTMLTextAreaElement) generate_traceable_htmlelement!(HTMLTextAreaElement)
generate_cacheable_wrapper_htmlelement!(HTMLTitleElement, HTMLTitleElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTitleElement, HTMLTitleElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTitleElement)
generate_traceable_htmlelement!(HTMLTitleElement) generate_traceable_htmlelement!(HTMLTitleElement)
generate_cacheable_wrapper_htmlelement!(HTMLTimeElement, HTMLTimeElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTimeElement, HTMLTimeElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTimeElement)
generate_traceable_htmlelement!(HTMLTimeElement) generate_traceable_htmlelement!(HTMLTimeElement)
generate_cacheable_wrapper_htmlelement!(HTMLTrackElement, HTMLTrackElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLTrackElement, HTMLTrackElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLTrackElement)
generate_traceable_htmlelement!(HTMLTrackElement) generate_traceable_htmlelement!(HTMLTrackElement)
generate_cacheable_wrapper_htmlelement!(HTMLUListElement, HTMLUListElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLUListElement, HTMLUListElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLUListElement)
generate_traceable_htmlelement!(HTMLUListElement) generate_traceable_htmlelement!(HTMLUListElement)
generate_cacheable_wrapper_htmlelement!(HTMLUnknownElement, HTMLUnknownElementBinding::Wrap) generate_cacheable_wrapper_htmlelement!(HTMLUnknownElement, HTMLUnknownElementBinding::Wrap)
generate_binding_object_htmlelement!(HTMLUnknownElement)
generate_traceable_htmlelement!(HTMLUnknownElement) generate_traceable_htmlelement!(HTMLUnknownElement)
generate_cacheable_wrapper_htmlmediaelement!(HTMLVideoElement, HTMLVideoElementBinding::Wrap) generate_cacheable_wrapper_htmlmediaelement!(HTMLVideoElement, HTMLVideoElementBinding::Wrap)
generate_binding_object_htmlmediaelement!(HTMLVideoElement)
generate_traceable_htmlmediaelement!(HTMLVideoElement) generate_traceable_htmlmediaelement!(HTMLVideoElement)
generate_cacheable_wrapper!(HTMLElement, HTMLElementBinding::Wrap) generate_cacheable_wrapper!(HTMLElement, HTMLElementBinding::Wrap)
generate_binding_object!(HTMLElement)
generate_traceable!(HTMLElement) generate_traceable!(HTMLElement)
generate_binding_object_node!(Element)
generate_traceable_node!(Element) generate_traceable_node!(Element)
generate_binding_object_node!(CharacterData)
generate_traceable_node!(CharacterData) generate_traceable_node!(CharacterData)

View file

@ -114,6 +114,12 @@ impl Reflectable for AbstractNode<ScriptView> {
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
fail!(~"need to implement wrapping"); 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> { impl Traceable for Node<ScriptView> {

View file

@ -541,6 +541,7 @@ pub trait Reflectable {
fn reflector<'a>(&'a self) -> &'a Reflector; fn reflector<'a>(&'a self) -> &'a Reflector;
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector; fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector;
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject; fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject;
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable>;
} }
pub struct Reflector { 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] #[fixed_stack_segment]
pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool, pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool,
vp: *JSVal) -> bool { vp: *JSVal) -> bool {

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * 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 dom::bindings::codegen::BlobBinding;
use script_task::{page_from_context}; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
BlobBinding::Wrap(cx, scope, self) BlobBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for Blob {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -70,4 +70,8 @@ impl Reflectable for CharacterData {
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
fail!(~"need to implement wrapping"); fail!(~"need to implement wrapping");
} }
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.node.GetParentObject(cx)
}
} }

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * 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 dom::bindings::codegen::ClientRectBinding;
use script_task::page_from_context; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
ClientRectBinding::Wrap(cx, scope, self) ClientRectBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for ClientRect {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::ClientRectListBinding; use dom::bindings::codegen::ClientRectListBinding;
use dom::bindings::utils::{Reflector, Reflectable, BindingObject}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::clientrect::ClientRect; use dom::clientrect::ClientRect;
use script_task::page_from_context; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
ClientRectListBinding::Wrap(cx, scope, self) ClientRectListBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for ClientRectList {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -4,8 +4,8 @@
use dom::comment::Comment; use dom::comment::Comment;
use dom::bindings::codegen::DocumentBinding; use dom::bindings::codegen::DocumentBinding;
use dom::bindings::utils::{DOMString, Reflector, ErrorResult, Fallible}; use dom::bindings::utils::{DOMString, ErrorResult, Fallible};
use dom::bindings::utils::{BindingObject, Reflectable, DerivedWrapper}; 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::bindings::utils::{is_valid_element_name, InvalidCharacter, Traceable, null_str_as_empty, null_str_as_word_null};
use dom::documentfragment::DocumentFragment; use dom::documentfragment::DocumentFragment;
use dom::element::{Element}; use dom::element::{Element};
@ -176,9 +176,7 @@ impl Reflectable for AbstractDocument {
} }
} }
} }
}
impl BindingObject for AbstractDocument {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
do self.with_mut_base |doc| { do self.with_mut_base |doc| {
doc.GetParentObject(cx) doc.GetParentObject(cx)
@ -207,9 +205,7 @@ impl Reflectable for Document {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
DocumentBinding::Wrap(cx, scope, self) DocumentBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for Document {
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
Some(self.window as @mut Reflectable) Some(self.window as @mut Reflectable)
} }

View file

@ -42,6 +42,10 @@ impl Reflectable for Element {
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
fail!("no wrapping") fail!("no wrapping")
} }
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.node.GetParentObject(cx)
}
} }
#[deriving(Eq)] #[deriving(Eq)]

View file

@ -5,8 +5,8 @@
use dom::eventtarget::EventTarget; use dom::eventtarget::EventTarget;
use dom::window::Window; use dom::window::Window;
use dom::bindings::codegen::EventBinding; use dom::bindings::codegen::EventBinding;
use dom::bindings::utils::{Reflectable, BindingObject}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::utils::{DOMString, ErrorResult, Fallible, Reflector}; use dom::bindings::utils::{DOMString, ErrorResult, Fallible};
use geom::point::Point2D; use geom::point::Point2D;
use js::jsapi::{JSObject, JSContext}; use js::jsapi::{JSObject, JSContext};
@ -121,9 +121,7 @@ impl Reflectable for Event {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
EventBinding::Wrap(cx, scope, self) EventBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for Event {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::EventTargetBinding; 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 script_task::page_from_context;
use js::jsapi::{JSObject, JSContext}; use js::jsapi::{JSObject, JSContext};
@ -36,9 +36,7 @@ impl Reflectable for EventTarget {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
EventTargetBinding::Wrap(cx, scope, self) EventTargetBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for EventTarget {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
// TODO(tkuehn): This only handles top-level pages. Needs to handle subframes. // TODO(tkuehn): This only handles top-level pages. Needs to handle subframes.

View file

@ -2,8 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::utils::{Reflectable, BindingObject}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::utils::{Reflector, DOMString, null_str_as_empty}; use dom::bindings::utils::{DOMString, null_str_as_empty};
use dom::bindings::codegen::FormDataBinding; use dom::bindings::codegen::FormDataBinding;
use dom::blob::Blob; use dom::blob::Blob;
use script_task::{page_from_context}; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
FormDataBinding::Wrap(cx, scope, self) FormDataBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for FormData {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::HTMLCollectionBinding; 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::bindings::utils::{DOMString, Fallible};
use dom::node::{AbstractNode, ScriptView}; use dom::node::{AbstractNode, ScriptView};
use script_task::page_from_context; 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 { impl Reflectable for HTMLCollection {
fn reflector<'a>(&'a self) -> &'a Reflector { fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector_ &self.reflector_
@ -79,4 +69,12 @@ impl Reflectable for HTMLCollection {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
HTMLCollectionBinding::Wrap(cx, scope, self) 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)
}
}
} }

View file

@ -4,7 +4,7 @@
use dom::bindings::codegen::HTMLDocumentBinding; use dom::bindings::codegen::HTMLDocumentBinding;
use dom::bindings::utils::{DOMString, ErrorResult, Fallible, Traceable}; 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::document::{AbstractDocument, Document, ReflectableDocument, HTML};
use dom::element::HTMLHeadElementTypeId; use dom::element::HTMLHeadElementTypeId;
use dom::htmlcollection::HTMLCollection; use dom::htmlcollection::HTMLCollection;
@ -196,9 +196,7 @@ impl Reflectable for HTMLDocument {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
HTMLDocumentBinding::Wrap(cx, scope, self) HTMLDocumentBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for HTMLDocument {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.parent.GetParentObject(cx) self.parent.GetParentObject(cx)
} }

View file

@ -4,7 +4,7 @@
use dom::bindings::codegen::MouseEventBinding; use dom::bindings::codegen::MouseEventBinding;
use dom::bindings::utils::{ErrorResult, Fallible, DOMString}; 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::eventtarget::EventTarget;
use dom::uievent::UIEvent; use dom::uievent::UIEvent;
use dom::window::Window; use dom::window::Window;
@ -153,9 +153,7 @@ impl Reflectable for MouseEvent {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
MouseEventBinding::Wrap(cx, scope, self) MouseEventBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for MouseEvent {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.parent.GetParentObject(cx) self.parent.GetParentObject(cx)
} }

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * 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::utils::{DOMString, Fallible};
use dom::bindings::codegen::NavigatorBinding; use dom::bindings::codegen::NavigatorBinding;
use script_task::{page_from_context}; 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 { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
NavigatorBinding::Wrap(cx, scope, self) NavigatorBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for Navigator {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
let page = page_from_context(cx); let page = page_from_context(cx);
unsafe { unsafe {

View file

@ -5,8 +5,9 @@
//! The core DOM types. Defines the basic DOM hierarchy as well as all the HTML elements. //! The core DOM types. Defines the basic DOM hierarchy as well as all the HTML elements.
use dom::bindings::node; use dom::bindings::node;
use dom::bindings::utils::{Reflector, DOMString, ErrorResult, Fallible, NotFound, HierarchyRequest}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::utils::{BindingObject, Reflectable, null_str_as_empty}; use dom::bindings::utils::{DOMString, null_str_as_empty};
use dom::bindings::utils::{ErrorResult, Fallible, NotFound, HierarchyRequest};
use dom::characterdata::CharacterData; use dom::characterdata::CharacterData;
use dom::document::AbstractDocument; use dom::document::AbstractDocument;
use dom::documenttype::DocumentType; use dom::documenttype::DocumentType;
@ -901,9 +902,7 @@ impl Reflectable for Node<ScriptView> {
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
fail!(~"need to implement wrapping"); fail!(~"need to implement wrapping");
} }
}
impl BindingObject for Node<ScriptView> {
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
match self.parent_node { match self.parent_node {
Some(node) => Some(unsafe {node.as_cacheable_wrapper()}), Some(node) => Some(unsafe {node.as_cacheable_wrapper()}),

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::NodeListBinding; use dom::bindings::codegen::NodeListBinding;
use dom::bindings::utils::{Reflectable, BindingObject, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::node::{AbstractNode, ScriptView}; use dom::node::{AbstractNode, ScriptView};
use script_task::page_from_context; 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 { impl Reflectable for NodeList {
fn reflector<'a>(&'a self) -> &'a Reflector { fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector_ &self.reflector_
@ -87,4 +78,11 @@ impl Reflectable for NodeList {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
NodeListBinding::Wrap(cx, scope, self) 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)
}
}
} }

View file

@ -4,7 +4,7 @@
use dom::bindings::codegen::UIEventBinding; use dom::bindings::codegen::UIEventBinding;
use dom::bindings::utils::{DOMString, Fallible}; 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::node::{AbstractNode, ScriptView};
use dom::event::Event; use dom::event::Event;
use dom::window::Window; use dom::window::Window;
@ -126,9 +126,7 @@ impl Reflectable for UIEvent {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
UIEventBinding::Wrap(cx, scope, self) UIEventBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for UIEvent {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
self.parent.GetParentObject(cx) self.parent.GetParentObject(cx)
} }

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * 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 dom::bindings::codegen::ValidityStateBinding;
use js::jsapi::{JSContext, JSObject}; use js::jsapi::{JSContext, JSObject};
@ -70,9 +70,7 @@ impl Reflectable for ValidityState {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
ValidityStateBinding::Wrap(cx, scope, self) ValidityStateBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for ValidityState {
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
None None
} }

View file

@ -3,8 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::WindowBinding; use dom::bindings::codegen::WindowBinding;
use dom::bindings::utils::{Reflector, DOMString, Traceable}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::utils::{Reflectable, BindingObject, null_str_as_empty}; use dom::bindings::utils::{DOMString, null_str_as_empty, Traceable};
use dom::document::AbstractDocument; use dom::document::AbstractDocument;
use dom::node::{AbstractNode, ScriptView}; use dom::node::{AbstractNode, ScriptView};
use dom::navigator::Navigator; use dom::navigator::Navigator;
@ -152,9 +152,7 @@ impl Reflectable for Window {
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
WindowBinding::Wrap(cx, scope, self) WindowBinding::Wrap(cx, scope, self)
} }
}
impl BindingObject for Window {
fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> { fn GetParentObject(&self, _cx: *JSContext) -> Option<@mut Reflectable> {
None None
} }

View file

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * 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 script_task::page_from_context;
use js::jsapi::{JSContext, JSObject}; 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 { impl Reflectable for WindowProxy {
fn reflector<'a>(&'a self) -> &'a Reflector { fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector_ &self.reflector_
@ -44,4 +35,11 @@ impl Reflectable for WindowProxy {
fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
fail!("not yet implemented") 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)
}
}
} }