Rename the node field of the DOM node hierarchy

Renamed the Node elements

Fixes #924
This commit is contained in:
Luis de Bethencourt 2013-09-19 19:01:58 -04:00
parent 2dbd065d91
commit cfd726f7d6
9 changed files with 61 additions and 26 deletions

View file

@ -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( macro_rules! generate_binding_object(
($name: path) => ( ($name: path) => (
impl BindingObject for $name { 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( macro_rules! generate_traceable(
($name: path) => ( ($name: path) => (
impl Traceable for $name { 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_cacheable_wrapper!(Comment, CommentBinding::Wrap)
generate_binding_object!(Comment) generate_binding_object!(Comment)
generate_traceable!(Comment) generate_traceable!(Comment)
generate_cacheable_wrapper!(DocumentType<ScriptView>, DocumentTypeBinding::Wrap) generate_cacheable_wrapper_node!(DocumentType<ScriptView>, DocumentTypeBinding::Wrap)
generate_binding_object!(DocumentType<ScriptView>) generate_binding_object_node!(DocumentType<ScriptView>)
generate_traceable!(DocumentType<ScriptView>) generate_traceable_node!(DocumentType<ScriptView>)
generate_cacheable_wrapper!(Text, TextBinding::Wrap) generate_cacheable_wrapper!(Text, TextBinding::Wrap)
generate_binding_object!(Text) generate_binding_object!(Text)
generate_traceable!(Text) generate_traceable!(Text)
@ -285,5 +320,5 @@ generate_binding_object_htmlelement!(HTMLVideoElement)
generate_traceable_htmlelement!(HTMLVideoElement) generate_traceable_htmlelement!(HTMLVideoElement)
generate_traceable!(HTMLElement) generate_traceable!(HTMLElement)
generate_traceable!(Element) generate_traceable_node!(Element)
generate_traceable!(CharacterData) generate_traceable_node!(CharacterData)

View file

@ -10,14 +10,14 @@ use dom::node::{Node, NodeTypeId, ScriptView};
use js::jsapi::{JSObject, JSContext}; use js::jsapi::{JSObject, JSContext};
pub struct CharacterData { pub struct CharacterData {
element: Node<ScriptView>, node: Node<ScriptView>,
data: ~str data: ~str
} }
impl CharacterData { impl CharacterData {
pub fn new(id: NodeTypeId, data: ~str) -> CharacterData { pub fn new(id: NodeTypeId, data: ~str) -> CharacterData {
CharacterData { CharacterData {
element: Node::new(id), node: Node::new(id),
data: data data: data
} }
} }
@ -59,7 +59,7 @@ impl CharacterData {
impl CacheableWrapper for CharacterData { impl CacheableWrapper for CharacterData {
fn get_wrappercache(&mut self) -> &mut WrapperCache { 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 { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
@ -69,6 +69,6 @@ impl CacheableWrapper for CharacterData {
impl BindingObject for CharacterData { impl BindingObject for CharacterData {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> {
self.element.GetParentObject(cx) self.node.GetParentObject(cx)
} }
} }

View file

@ -7,7 +7,7 @@ use dom::node::{ScriptView, Node, DoctypeNodeTypeId};
/// The `DOCTYPE` tag. /// The `DOCTYPE` tag.
pub struct DocumentType<View> { pub struct DocumentType<View> {
element: Node<View>, node: Node<View>,
name: ~str, name: ~str,
public_id: Option<~str>, public_id: Option<~str>,
system_id: Option<~str>, system_id: Option<~str>,
@ -22,7 +22,7 @@ impl DocumentType<ScriptView> {
force_quirks: bool) force_quirks: bool)
-> DocumentType<ScriptView> { -> DocumentType<ScriptView> {
DocumentType { DocumentType {
element: Node::new(DoctypeNodeTypeId), node: Node::new(DoctypeNodeTypeId),
name: name, name: name,
public_id: public_id, public_id: public_id,
system_id: system_id, system_id: system_id,

View file

@ -22,7 +22,7 @@ use std::str::eq_slice;
use std::ascii::StrAsciiExt; use std::ascii::StrAsciiExt;
pub struct Element { pub struct Element {
element: Node<ScriptView>, node: Node<ScriptView>,
tag_name: ~str, // TODO: This should be an atom, not a ~str. tag_name: ~str, // TODO: This should be an atom, not a ~str.
attrs: ~[Attr], attrs: ~[Attr],
style_attribute: Option<Stylesheet>, style_attribute: Option<Stylesheet>,
@ -30,7 +30,7 @@ pub struct Element {
impl CacheableWrapper for Element { impl CacheableWrapper for Element {
fn get_wrappercache(&mut self) -> &mut WrapperCache { 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 { fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject {
@ -40,7 +40,7 @@ impl CacheableWrapper for Element {
impl BindingObject for Element { impl BindingObject for Element {
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut CacheableWrapper> { 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 { impl<'self> Element {
pub fn new(type_id: ElementTypeId, tag_name: ~str) -> Element { pub fn new(type_id: ElementTypeId, tag_name: ~str) -> Element {
Element { Element {
element: Node::new(ElementNodeTypeId(type_id)), node: Node::new(ElementNodeTypeId(type_id)),
tag_name: tag_name, tag_name: tag_name,
attrs: ~[], attrs: ~[],
style_attribute: None, 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() }, Some(owner) => do owner.with_base |owner| { owner.content_changed() },
None => {} None => {}
} }
} }
fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { 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 win = doc.with_base(|doc| doc.window.unwrap());
let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cx = win.page.js_info.get_ref().js_compartment.cx.ptr;
let cache = win.get_wrappercache(); let cache = win.get_wrappercache();
@ -276,7 +276,7 @@ impl Element {
} }
pub fn GetClientRects(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRectList { 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) => { Some(doc) => {
match doc.with_base(|doc| doc.window) { match doc.with_base(|doc| doc.window) {
Some(win) => { Some(win) => {
@ -318,7 +318,7 @@ impl Element {
} }
pub fn GetBoundingClientRect(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRect { pub fn GetBoundingClientRect(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRect {
match self.element.owner_doc { match self.node.owner_doc {
Some(doc) => { Some(doc) => {
match doc.with_base(|doc| doc.window) { match doc.with_base(|doc| doc.window) {
Some(win) => { Some(win) => {

View file

@ -14,7 +14,7 @@ pub struct HTMLDataListElement {
impl HTMLDataListElement { impl HTMLDataListElement {
fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { 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 win = doc.with_base(|doc| doc.window.unwrap());
let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cx = win.page.js_info.get_ref().js_compartment.cx.ptr;
let cache = win.get_wrappercache(); let cache = win.get_wrappercache();

View file

@ -40,7 +40,7 @@ impl HTMLFieldSetElement {
} }
fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { 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 win = doc.with_base(|doc| doc.window.unwrap());
let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cx = win.page.js_info.get_ref().js_compartment.cx.ptr;
let cache = win.get_wrappercache(); let cache = win.get_wrappercache();

View file

@ -16,7 +16,7 @@ pub struct HTMLFormElement {
impl HTMLFormElement { impl HTMLFormElement {
fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { 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 win = doc.with_base(|doc| doc.window.unwrap());
let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cx = win.page.js_info.get_ref().js_compartment.cx.ptr;
let cache = win.get_wrappercache(); let cache = win.get_wrappercache();

View file

@ -42,7 +42,7 @@ impl HTMLImageElement {
pub fn AfterSetAttr(&mut self, name: &DOMString, _value: &DOMString) { pub fn AfterSetAttr(&mut self, name: &DOMString, _value: &DOMString) {
let name = null_str_as_empty(name); let name = null_str_as_empty(name);
if "src" == 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() { for doc in doc.iter() {
do doc.with_base |doc| { do doc.with_base |doc| {
for window in doc.window.iter() { for window in doc.window.iter() {
@ -101,7 +101,7 @@ impl HTMLImageElement {
} }
pub fn Width(&self, abstract_self: AbstractNode<ScriptView>) -> u32 { 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 { match node.owner_doc {
Some(doc) => { Some(doc) => {
match doc.with_base(|doc| doc.window) { match doc.with_base(|doc| doc.window) {
@ -138,7 +138,7 @@ impl HTMLImageElement {
} }
pub fn Height(&self, abstract_self: AbstractNode<ScriptView>) -> u32 { 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 { match node.owner_doc {
Some(doc) => { Some(doc) => {
match doc.with_base(|doc| doc.window) { match doc.with_base(|doc| doc.window) {

View file

@ -21,7 +21,7 @@ impl HTMLMapElement {
} }
fn get_scope_and_cx(&self) -> (*JSObject, *JSContext) { 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 win = doc.with_base(|doc| doc.window.unwrap());
let cx = win.page.js_info.get_ref().js_compartment.cx.ptr; let cx = win.page.js_info.get_ref().js_compartment.cx.ptr;
let cache = win.get_wrappercache(); let cache = win.get_wrappercache();