diff options
-rw-r--r-- | src/components/script/dom/bindings/element.rs | 45 | ||||
-rw-r--r-- | src/components/script/dom/characterdata.rs | 8 | ||||
-rw-r--r-- | src/components/script/dom/documenttype.rs | 4 | ||||
-rw-r--r-- | src/components/script/dom/element.rs | 16 | ||||
-rw-r--r-- | src/components/script/dom/htmldatalistelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmlfieldsetelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmlformelement.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmlimageelement.rs | 6 | ||||
-rw-r--r-- | src/components/script/dom/htmlmapelement.rs | 2 |
9 files changed, 61 insertions, 26 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) diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index b59dd2b7910..f7e0587455b 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -10,14 +10,14 @@ use dom::node::{Node, NodeTypeId, ScriptView}; use js::jsapi::{JSObject, JSContext}; pub struct CharacterData { - element: Node<ScriptView>, + node: Node<ScriptView>, data: ~str } impl CharacterData { pub fn new(id: NodeTypeId, data: ~str) -> CharacterData { CharacterData { - element: Node::new(id), + node: Node::new(id), data: data } } @@ -59,7 +59,7 @@ impl CharacterData { impl CacheableWrapper for CharacterData { fn get_wrappercache(&mut self) -> &mut WrapperCache { - self.element.get_wrappercache() + self.node.get_wrappercache() } fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { @@ -69,6 +69,6 @@ impl CacheableWrapper for CharacterData { impl BindingObject for CharacterData { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { - self.element.GetParentObject(cx) + self.node.GetParentObject(cx) } } diff --git a/src/components/script/dom/documenttype.rs b/src/components/script/dom/documenttype.rs index 0d9db10e9d8..d1f38b75039 100644 --- a/src/components/script/dom/documenttype.rs +++ b/src/components/script/dom/documenttype.rs @@ -7,7 +7,7 @@ use dom::node::{ScriptView, Node, DoctypeNodeTypeId}; /// The `DOCTYPE` tag. pub struct DocumentType<View> { - element: Node<View>, + node: Node<View>, name: ~str, public_id: Option<~str>, system_id: Option<~str>, @@ -22,7 +22,7 @@ impl DocumentType<ScriptView> { force_quirks: bool) -> DocumentType<ScriptView> { DocumentType { - element: Node::new(DoctypeNodeTypeId), + node: Node::new(DoctypeNodeTypeId), name: name, public_id: public_id, system_id: system_id, diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 9897f63b61b..32b5e8e9207 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -22,7 +22,7 @@ use std::str::eq_slice; use std::ascii::StrAsciiExt; pub struct Element { - element: Node<ScriptView>, + node: Node<ScriptView>, tag_name: ~str, // TODO: This should be an atom, not a ~str. attrs: ~[Attr], style_attribute: Option<Stylesheet>, @@ -30,7 +30,7 @@ pub struct Element { impl CacheableWrapper for Element { fn get_wrappercache(&mut self) -> &mut WrapperCache { - self.element.get_wrappercache() + self.node.get_wrappercache() } fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { @@ -40,7 +40,7 @@ impl CacheableWrapper for Element { impl BindingObject for Element { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { - self.element.GetParentObject(cx) + self.node.GetParentObject(cx) } } @@ -121,7 +121,7 @@ pub enum ElementTypeId { impl<'self> Element { pub fn new(type_id: ElementTypeId, tag_name: ~str) -> Element { Element { - element: Node::new(ElementNodeTypeId(type_id)), + node: Node::new(ElementNodeTypeId(type_id)), tag_name: tag_name, attrs: ~[], style_attribute: None, @@ -180,14 +180,14 @@ impl<'self> Element { _ => () } - match self.element.owner_doc { + match self.node.owner_doc { Some(owner) => do owner.with_base |owner| { owner.content_changed() }, None => {} } } fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { - let doc = self.element.owner_doc.unwrap(); + let doc = self.node.owner_doc.unwrap(); let win = doc.with_base(|doc| doc.window.unwrap()); let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cache = win.get_wrappercache(); @@ -276,7 +276,7 @@ impl Element { } pub fn GetClientRects(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRectList { - let (rects, cx, scope) = match self.element.owner_doc { + let (rects, cx, scope) = match self.node.owner_doc { Some(doc) => { match doc.with_base(|doc| doc.window) { Some(win) => { @@ -318,7 +318,7 @@ impl Element { } pub fn GetBoundingClientRect(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRect { - match self.element.owner_doc { + match self.node.owner_doc { Some(doc) => { match doc.with_base(|doc| doc.window) { Some(win) => { diff --git a/src/components/script/dom/htmldatalistelement.rs b/src/components/script/dom/htmldatalistelement.rs index c8b24a09f62..f83c60b004f 100644 --- a/src/components/script/dom/htmldatalistelement.rs +++ b/src/components/script/dom/htmldatalistelement.rs @@ -14,7 +14,7 @@ pub struct HTMLDataListElement { impl HTMLDataListElement { fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { - let doc = self.htmlelement.element.element.owner_doc.unwrap(); + let doc = self.htmlelement.element.node.owner_doc.unwrap(); let win = doc.with_base(|doc| doc.window.unwrap()); let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cache = win.get_wrappercache(); diff --git a/src/components/script/dom/htmlfieldsetelement.rs b/src/components/script/dom/htmlfieldsetelement.rs index f97c79a8df0..804657cf927 100644 --- a/src/components/script/dom/htmlfieldsetelement.rs +++ b/src/components/script/dom/htmlfieldsetelement.rs @@ -40,7 +40,7 @@ impl HTMLFieldSetElement { } fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { - let doc = self.htmlelement.element.element.owner_doc.unwrap(); + let doc = self.htmlelement.element.node.owner_doc.unwrap(); let win = doc.with_base(|doc| doc.window.unwrap()); let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cache = win.get_wrappercache(); diff --git a/src/components/script/dom/htmlformelement.rs b/src/components/script/dom/htmlformelement.rs index 7414cc2dc2a..781c392ee31 100644 --- a/src/components/script/dom/htmlformelement.rs +++ b/src/components/script/dom/htmlformelement.rs @@ -16,7 +16,7 @@ pub struct HTMLFormElement { impl HTMLFormElement { fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { - let doc = self.htmlelement.element.element.owner_doc.unwrap(); + let doc = self.htmlelement.element.node.owner_doc.unwrap(); let win = doc.with_base(|doc| doc.window.unwrap()); let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cache = win.get_wrappercache(); diff --git a/src/components/script/dom/htmlimageelement.rs b/src/components/script/dom/htmlimageelement.rs index 7cfc91ee0fc..26e13826bce 100644 --- a/src/components/script/dom/htmlimageelement.rs +++ b/src/components/script/dom/htmlimageelement.rs @@ -42,7 +42,7 @@ impl HTMLImageElement { pub fn AfterSetAttr(&mut self, name: &DOMString, _value: &DOMString) { let name = null_str_as_empty(name); if "src" == name { - let doc = self.htmlelement.element.element.owner_doc; + let doc = self.htmlelement.element.node.owner_doc; for doc in doc.iter() { do doc.with_base |doc| { for window in doc.window.iter() { @@ -101,7 +101,7 @@ impl HTMLImageElement { } pub fn Width(&self, abstract_self: AbstractNode<ScriptView>) -> u32 { - let node = &self.htmlelement.element.element; + let node = &self.htmlelement.element.node; match node.owner_doc { Some(doc) => { match doc.with_base(|doc| doc.window) { @@ -138,7 +138,7 @@ impl HTMLImageElement { } pub fn Height(&self, abstract_self: AbstractNode<ScriptView>) -> u32 { - let node = &self.htmlelement.element.element; + let node = &self.htmlelement.element.node; match node.owner_doc { Some(doc) => { match doc.with_base(|doc| doc.window) { diff --git a/src/components/script/dom/htmlmapelement.rs b/src/components/script/dom/htmlmapelement.rs index 5676f3c1455..ae98894d012 100644 --- a/src/components/script/dom/htmlmapelement.rs +++ b/src/components/script/dom/htmlmapelement.rs @@ -21,7 +21,7 @@ impl HTMLMapElement { } fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { - let doc = self.htmlelement.element.element.owner_doc.unwrap(); + let doc = self.htmlelement.element.node.owner_doc.unwrap(); let win = doc.with_base(|doc| doc.window.unwrap()); let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cache = win.get_wrappercache(); |