aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/element.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/bindings/element.rs')
-rw-r--r--src/components/script/dom/bindings/element.rs45
1 files changed, 40 insertions, 5 deletions
diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs
index 609b9bdbf9e..98479fa6556 100644
--- a/src/components/script/dom/bindings/element.rs
+++ b/src/components/script/dom/bindings/element.rs
@@ -39,6 +39,21 @@ macro_rules! generate_cacheable_wrapper_htmlelement(
)
)
+macro_rules! generate_cacheable_wrapper_node(
+ ($name: path, $wrap: path) => (
+ impl CacheableWrapper for $name {
+ fn get_wrappercache(&mut self) -> &mut WrapperCache {
+ self.node.get_wrappercache()
+ }
+
+ fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
+ let mut unused = false;
+ $wrap(cx, scope, self, &mut unused)
+ }
+ }
+ )
+)
+
macro_rules! generate_binding_object(
($name: path) => (
impl BindingObject for $name {
@@ -59,6 +74,16 @@ macro_rules! generate_binding_object_htmlelement(
)
)
+macro_rules! generate_binding_object_node(
+ ($name: path) => (
+ impl BindingObject for $name {
+ fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> {
+ self.node.GetParentObject(cx)
+ }
+ }
+ )
+)
+
macro_rules! generate_traceable(
($name: path) => (
impl Traceable for $name {
@@ -79,12 +104,22 @@ macro_rules! generate_traceable_htmlelement(
)
)
+macro_rules! generate_traceable_node(
+ ($name: path) => (
+ impl Traceable for $name {
+ fn trace(&self, trc: *mut JSTracer) {
+ self.node.trace(trc);
+ }
+ }
+ )
+)
+
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
generate_binding_object!(Comment)
generate_traceable!(Comment)
-generate_cacheable_wrapper!(DocumentType<ScriptView>, DocumentTypeBinding::Wrap)
-generate_binding_object!(DocumentType<ScriptView>)
-generate_traceable!(DocumentType<ScriptView>)
+generate_cacheable_wrapper_node!(DocumentType<ScriptView>, DocumentTypeBinding::Wrap)
+generate_binding_object_node!(DocumentType<ScriptView>)
+generate_traceable_node!(DocumentType<ScriptView>)
generate_cacheable_wrapper!(Text, TextBinding::Wrap)
generate_binding_object!(Text)
generate_traceable!(Text)
@@ -285,5 +320,5 @@ generate_binding_object_htmlelement!(HTMLVideoElement)
generate_traceable_htmlelement!(HTMLVideoElement)
generate_traceable!(HTMLElement)
-generate_traceable!(Element)
-generate_traceable!(CharacterData)
+generate_traceable_node!(Element)
+generate_traceable_node!(CharacterData)