aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/comment.rs7
-rw-r--r--src/components/script/dom/document.rs3
-rw-r--r--src/components/script/dom/element.rs105
-rw-r--r--src/components/script/dom/htmlformelement.rs5
-rw-r--r--src/components/script/dom/node.rs2
-rw-r--r--src/components/script/dom/text.rs3
-rw-r--r--src/components/script/html/hubbub_html_parser.rs18
7 files changed, 59 insertions, 84 deletions
diff --git a/src/components/script/dom/comment.rs b/src/components/script/dom/comment.rs
index 9c8af55e678..89b18bf8422 100644
--- a/src/components/script/dom/comment.rs
+++ b/src/components/script/dom/comment.rs
@@ -22,9 +22,8 @@ impl Comment {
pub fn Constructor(owner: @mut Window, data: &DOMString) -> Fallible<AbstractNode<ScriptView>> {
let s = null_str_as_empty(data);
- unsafe {
- let compartment = (*owner.page).js_info.get_ref().js_compartment;
- Ok(Node::as_abstract_node(compartment.cx.ptr, @Comment::new(s)))
- }
+ let cx = (*owner.page).js_info.get_ref().js_compartment.cx.ptr;
+ let comment = @Comment::new(s);
+ Ok(unsafe { Node::as_abstract_node(cx, comment) })
}
}
diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs
index 293ed9cb7e5..a8748f7f2d5 100644
--- a/src/components/script/dom/document.rs
+++ b/src/components/script/dom/document.rs
@@ -258,7 +258,8 @@ impl Document {
pub fn CreateTextNode(&self, data: &DOMString) -> AbstractNode<ScriptView> {
let cx = self.get_cx();
- unsafe { Node::as_abstract_node(cx, @Text::new(null_str_as_empty(data))) }
+ let text = @Text::new(null_str_as_empty(data));
+ unsafe { Node::as_abstract_node(cx, text) }
}
pub fn CreateEvent(&self, _interface: &DOMString) -> Fallible<@mut Event> {
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs
index 3b29913fe2e..e1a778cb2ef 100644
--- a/src/components/script/dom/element.rs
+++ b/src/components/script/dom/element.rs
@@ -277,75 +277,54 @@ impl Element {
}
pub fn GetClientRects(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRectList {
- let (rects, cx, scope) = match self.node.owner_doc {
- Some(doc) => {
- match doc.with_base(|doc| doc.window) {
- Some(win) => {
- let node = abstract_self;
- assert!(node.is_element());
- let page = win.page;
- let (port, chan) = comm::stream();
- match page.query_layout(ContentBoxesQuery(node, chan), port) {
- ContentBoxesResponse(rects) => {
- let cx = page.js_info.get_ref().js_compartment.cx.ptr;
- let cache = win.get_wrappercache();
- let scope = cache.get_wrapper();
- let rects = do rects.map |r| {
- ClientRect::new(
- r.origin.y.to_f32(),
- (r.origin.y + r.size.height).to_f32(),
- r.origin.x.to_f32(),
- (r.origin.x + r.size.width).to_f32(),
- cx,
- scope)
- };
- Some((rects, cx, scope))
- },
- }
- }
- None => {
- debug!("no window");
- None
- }
- }
- }
- None => {
- debug!("no document");
- None
- }
- }.unwrap();
+ let document = self.node.owner_doc.expect("no document");
+ let win = document.with_base(|doc| doc.window).expect("no window");
+ let node = abstract_self;
+ assert!(node.is_element());
+ let page = win.page;
+ let (port, chan) = comm::stream();
+ let (rects, cx, scope) =
+ match page.query_layout(ContentBoxesQuery(node, chan), port) {
+ ContentBoxesResponse(rects) => {
+ let cx = page.js_info.get_ref().js_compartment.cx.ptr;
+ let cache = win.get_wrappercache();
+ let scope = cache.get_wrapper();
+ let rects = do rects.map |r| {
+ ClientRect::new(
+ r.origin.y.to_f32(),
+ (r.origin.y + r.size.height).to_f32(),
+ r.origin.x.to_f32(),
+ (r.origin.x + r.size.width).to_f32(),
+ cx,
+ scope)
+ };
+ (rects, cx, scope)
+ },
+ };
ClientRectList::new(rects, cx, scope)
}
pub fn GetBoundingClientRect(&self, abstract_self: AbstractNode<ScriptView>) -> @mut ClientRect {
- match self.node.owner_doc {
- Some(doc) => {
- match doc.with_base(|doc| doc.window) {
- Some(win) => {
- let page = win.page;
- let node = abstract_self;
- assert!(node.is_element());
- let (port, chan) = comm::stream();
- match page.query_layout(ContentBoxQuery(node, chan), port) {
- ContentBoxResponse(rect) => {
- let cx = page.js_info.get_ref().js_compartment.cx.ptr;
- let cache = win.get_wrappercache();
- let scope = cache.get_wrapper();
- ClientRect::new(
- rect.origin.y.to_f32(),
- (rect.origin.y + rect.size.height).to_f32(),
- rect.origin.x.to_f32(),
- (rect.origin.x + rect.size.width).to_f32(),
- cx,
- scope)
- }
- }
- }
- None => fail!("no window")
- }
+ let document = self.node.owner_doc.expect("no document");
+ let win = document.with_base(|doc| doc.window).expect("no window");
+ let page = win.page;
+ let node = abstract_self;
+ assert!(node.is_element());
+ let (port, chan) = comm::stream();
+ match page.query_layout(ContentBoxQuery(node, chan), port) {
+ ContentBoxResponse(rect) => {
+ let cx = page.js_info.get_ref().js_compartment.cx.ptr;
+ let cache = win.get_wrappercache();
+ let scope = cache.get_wrapper();
+ ClientRect::new(
+ rect.origin.y.to_f32(),
+ (rect.origin.y + rect.size.height).to_f32(),
+ rect.origin.x.to_f32(),
+ (rect.origin.x + rect.size.width).to_f32(),
+ cx,
+ scope)
}
- None => fail!("no document")
}
}
diff --git a/src/components/script/dom/htmlformelement.rs b/src/components/script/dom/htmlformelement.rs
index 781c392ee31..ba38135214f 100644
--- a/src/components/script/dom/htmlformelement.rs
+++ b/src/components/script/dom/htmlformelement.rs
@@ -117,9 +117,6 @@ impl HTMLFormElement {
}
pub fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> AbstractNode<ScriptView> {
- let (_scope, cx) = self.get_scope_and_cx();
- // FIXME: This should be replaced with a proper value according to the index
- let node = @Node::new(ElementNodeTypeId(HTMLFormElementTypeId));
- unsafe { return Node::as_abstract_node(cx, node) }
+ fail!("Not implemented.")
}
}
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs
index 74f6cd58f8e..155f9c390dd 100644
--- a/src/components/script/dom/node.rs
+++ b/src/components/script/dom/node.rs
@@ -508,7 +508,7 @@ impl Node<ScriptView> {
None => None
}
}
- }
+}
impl Node<ScriptView> {
pub fn NodeType(&self) -> u16 {
diff --git a/src/components/script/dom/text.rs b/src/components/script/dom/text.rs
index e5b0b6f5605..955b64bf712 100644
--- a/src/components/script/dom/text.rs
+++ b/src/components/script/dom/text.rs
@@ -22,7 +22,8 @@ impl Text {
pub fn Constructor(owner: @mut Window, text: &DOMString) -> Fallible<AbstractNode<ScriptView>> {
let cx = owner.page.js_info.get_ref().js_compartment.cx.ptr;
- unsafe { Ok(Node::as_abstract_node(cx, @Text::new(null_str_as_empty(text)))) }
+ let text = @Text::new(null_str_as_empty(text));
+ Ok(unsafe { Node::as_abstract_node(cx, text) })
}
pub fn SplitText(&self, _offset: u32) -> Fallible<AbstractNode<ScriptView>> {
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs
index 523e7dabe3c..3df574c6f00 100644
--- a/src/components/script/html/hubbub_html_parser.rs
+++ b/src/components/script/html/hubbub_html_parser.rs
@@ -291,12 +291,10 @@ pub fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode<ScriptV
handle_htmlmediaelement!(cx, tag, "audio", HTMLAudioElementTypeId, HTMLAudioElement);
handle_htmlmediaelement!(cx, tag, "video", HTMLVideoElementTypeId, HTMLVideoElement);
- unsafe {
- let element = @HTMLUnknownElement {
- htmlelement: HTMLElement::new(HTMLUnknownElementTypeId, tag.to_str())
- };
- Node::as_abstract_node(cx, element)
- }
+ let element = @HTMLUnknownElement {
+ htmlelement: HTMLElement::new(HTMLUnknownElementTypeId, tag.to_str())
+ };
+ unsafe { Node::as_abstract_node(cx, element) }
}
pub fn parse_html(cx: *JSContext,
@@ -367,8 +365,9 @@ pub fn parse_html(cx: *JSContext,
parser.set_tree_handler(~hubbub::TreeHandler {
create_comment: |data: ~str| {
debug!("create comment");
+ let comment = @Comment::new(data);
unsafe {
- Node::as_abstract_node(cx, @Comment::new(data)).to_hubbub_node()
+ Node::as_abstract_node(cx, comment).to_hubbub_node()
}
},
create_doctype: |doctype: ~hubbub::Doctype| {
@@ -466,9 +465,8 @@ pub fn parse_html(cx: *JSContext,
},
create_text: |data: ~str| {
debug!("create text");
- unsafe {
- Node::as_abstract_node(cx, @Text::new(data)).to_hubbub_node()
- }
+ let text = @Text::new(data);
+ unsafe { Node::as_abstract_node(cx, text).to_hubbub_node() }
},
ref_node: |_| {},
unref_node: |_| {},