aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/treewalker.rs
diff options
context:
space:
mode:
authorCameron Zwarich <zwarich@mozilla.com>2014-09-18 13:43:15 -0700
committerCameron Zwarich <zwarich@mozilla.com>2014-09-19 13:39:17 -0700
commit4fa872511117eafd934cad70c7d3b8c583fb960e (patch)
tree8c75e871c896648de54c2e9aa376d30b4b98220e /components/script/dom/treewalker.rs
parentb8f34bbc5170f78e4939b1d647f8d8498e3c2fb6 (diff)
downloadservo-4fa872511117eafd934cad70c7d3b8c583fb960e.tar.gz
servo-4fa872511117eafd934cad70c7d3b8c583fb960e.zip
First steps of &JSRef -> JSRef conversion
Replace &JSRef with JSRef in the bulk of the generated code. This will remove a level of indirection throughout all DOM code. This patch doesn't change methods implemented on JSRef<T> to take `self` rather than `&self`, and it leaves a few other uses of &JSRef, but those changes can be made incrementally.
Diffstat (limited to 'components/script/dom/treewalker.rs')
-rw-r--r--components/script/dom/treewalker.rs112
1 files changed, 56 insertions, 56 deletions
diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs
index b20dd3ac568..aa09af45c7c 100644
--- a/components/script/dom/treewalker.rs
+++ b/components/script/dom/treewalker.rs
@@ -34,7 +34,7 @@ pub struct TreeWalker {
}
impl TreeWalker {
- pub fn new_inherited(root_node: &JSRef<Node>,
+ pub fn new_inherited(root_node: JSRef<Node>,
what_to_show: u32,
filter: Filter) -> TreeWalker {
TreeWalker {
@@ -46,8 +46,8 @@ impl TreeWalker {
}
}
- pub fn new_with_filter(document: &JSRef<Document>,
- root_node: &JSRef<Node>,
+ pub fn new_with_filter(document: JSRef<Document>,
+ root_node: JSRef<Node>,
what_to_show: u32,
filter: Filter) -> Temporary<TreeWalker> {
let window = document.window.root();
@@ -56,8 +56,8 @@ impl TreeWalker {
TreeWalkerBinding::Wrap)
}
- pub fn new(document: &JSRef<Document>,
- root_node: &JSRef<Node>,
+ pub fn new(document: JSRef<Document>,
+ root_node: JSRef<Node>,
what_to_show: u32,
node_filter: Option<NodeFilter>) -> Temporary<TreeWalker> {
let filter = match node_filter {
@@ -89,7 +89,7 @@ impl<'a> TreeWalkerMethods for JSRef<'a, TreeWalker> {
Temporary::new(self.current_node.get())
}
- fn SetCurrentNode(&self, node: &JSRef<Node>) -> ErrorResult {
+ fn SetCurrentNode(&self, node: JSRef<Node>) -> ErrorResult {
// XXX Future: check_same_origin(root_node, node) (throws)
self.current_node.set(JS::from_rooted(node));
Ok(())
@@ -130,7 +130,7 @@ impl Reflectable for TreeWalker {
}
}
-type NodeAdvancer<'a, 'b> = |node: &JSRef<'a, Node>|: 'b -> Option<Temporary<Node>>;
+type NodeAdvancer<'a, 'b> = |node: JSRef<'a, Node>|: 'b -> Option<Temporary<Node>>;
trait PrivateTreeWalkerHelpers<'a, 'b> {
fn traverse_children(&self,
@@ -141,11 +141,11 @@ trait PrivateTreeWalkerHelpers<'a, 'b> {
next_child: NodeAdvancer<'a, 'b>,
next_sibling: NodeAdvancer<'a, 'b>)
-> Fallible<Option<Temporary<Node>>>;
- fn is_root_node(&self, node: &JSRef<'a, Node>) -> bool;
- fn is_current_node(&self, node: &JSRef<'a, Node>) -> bool;
- fn first_following_node_not_following_root(&self, node: &JSRef<'a, Node>)
+ fn is_root_node(&self, node: JSRef<'a, Node>) -> bool;
+ fn is_current_node(&self, node: JSRef<'a, Node>) -> bool;
+ fn first_following_node_not_following_root(&self, node: JSRef<'a, Node>)
-> Option<Temporary<Node>>;
- fn accept_node(&self, node: &JSRef<'a, Node>) -> Fallible<u16>;
+ fn accept_node(&self, node: JSRef<'a, Node>) -> Fallible<u16>;
}
impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
@@ -158,7 +158,7 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
// "1. Let node be the value of the currentNode attribute."
// "2. Set node to node's first child if type is first, and node's last child if type is last."
let cur = self.current_node.get().root();
- let mut node_op: Option<JSRef<Node>> = next_child(&*cur).map(|node| node.root().clone());
+ let mut node_op: Option<JSRef<Node>> = next_child(*cur).map(|node| node.root().clone());
// 3. Main: While node is not null, run these substeps:
'main: loop {
@@ -166,19 +166,19 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
None => break,
Some(node) => {
// "1. Filter node and let result be the return value."
- match self.accept_node(&node) {
+ match self.accept_node(node) {
Err(e) => return Err(e),
// "2. If result is FILTER_ACCEPT, then set the currentNode
// attribute to node and return node."
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
// "3. If result is FILTER_SKIP, run these subsubsteps:"
Ok(NodeFilterConstants::FILTER_SKIP) => {
// "1. Let child be node's first child if type is first,
// and node's last child if type is last."
- match next_child(&node) {
+ match next_child(node) {
// "2. If child is not null, set node to child and goto Main."
Some(child) => {
node_op = Some(child.root().clone());
@@ -196,7 +196,7 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
Some(node) => {
// "1. Let sibling be node's next sibling if type is next,
// and node's previous sibling if type is previous."
- match next_sibling(&node) {
+ match next_sibling(node) {
// "2. If sibling is not null,
// set node to sibling and goto Main."
Some(sibling) => {
@@ -210,8 +210,8 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
// or parent is currentNode attribute's value,
// return null."
None => return Ok(None),
- Some(parent) if self.is_root_node(&parent)
- || self.is_current_node(&parent) =>
+ Some(parent) if self.is_root_node(parent)
+ || self.is_current_node(parent) =>
return Ok(None),
// "5. Otherwise, set node to parent."
Some(parent) => node_op = Some(parent)
@@ -237,39 +237,39 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
// "1. Let node be the value of the currentNode attribute."
let mut node = self.current_node.get().root().clone();
// "2. If node is root, return null."
- if self.is_root_node(&node) {
+ if self.is_root_node(node) {
return Ok(None)
}
// "3. Run these substeps:"
loop {
// "1. Let sibling be node's next sibling if type is next,
// and node's previous sibling if type is previous."
- let mut sibling_op = next_sibling(&node);
+ let mut sibling_op = next_sibling(node);
// "2. While sibling is not null, run these subsubsteps:"
while sibling_op.is_some() {
// "1. Set node to sibling."
node = sibling_op.unwrap().root().clone();
// "2. Filter node and let result be the return value."
- let result = self.accept_node(&node);
+ let result = self.accept_node(node);
// "3. If result is FILTER_ACCEPT, then set the currentNode
// attribute to node and return node."
match result {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => {}
}
// "4. Set sibling to node's first child if type is next,
// and node's last child if type is previous."
- sibling_op = next_child(&node);
+ sibling_op = next_child(node);
// "5. If result is FILTER_REJECT or sibling is null,
// then set sibling to node's next sibling if type is next,
// and node's previous sibling if type is previous."
match (result, sibling_op) {
(Ok(NodeFilterConstants::FILTER_REJECT), _)
- | (_, None) => sibling_op = next_sibling(&node),
+ | (_, None) => sibling_op = next_sibling(node),
_ => {}
}
}
@@ -277,11 +277,11 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
match node.parent_node().map(|p| p.root().clone()) {
// "4. If node is null or is root, return null."
None => return Ok(None),
- Some(n) if self.is_root_node(&n) => return Ok(None),
+ Some(n) if self.is_root_node(n) => return Ok(None),
// "5. Filter node and if the return value is FILTER_ACCEPT, then return null."
Some(n) => {
node = n;
- match self.accept_node(&node) {
+ match self.accept_node(node) {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => return Ok(None),
_ => {}
@@ -293,14 +293,14 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
}
// http://dom.spec.whatwg.org/#concept-tree-following
- fn first_following_node_not_following_root(&self, node: &JSRef<'a, Node>)
+ fn first_following_node_not_following_root(&self, node: JSRef<'a, Node>)
-> Option<Temporary<Node>> {
// "An object A is following an object B if A and B are in the same tree
// and A comes after B in tree order."
match node.next_sibling() {
None => {
- let mut candidate = *node;
- while !self.is_root_node(&candidate) && candidate.next_sibling().is_none() {
+ let mut candidate = node;
+ while !self.is_root_node(candidate) && candidate.next_sibling().is_none() {
match candidate.parent_node() {
None =>
// This can happen if the user set the current node to somewhere
@@ -309,7 +309,7 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
Some(n) => candidate = n.root().clone()
}
}
- if self.is_root_node(&candidate) {
+ if self.is_root_node(candidate) {
None
} else {
candidate.next_sibling()
@@ -320,7 +320,7 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
}
// http://dom.spec.whatwg.org/#concept-node-filter
- fn accept_node(&self, node: &JSRef<'a, Node>) -> Fallible<u16> {
+ fn accept_node(&self, node: JSRef<'a, Node>) -> Fallible<u16> {
// "To filter node run these steps:"
// "1. Let n be node's nodeType attribute value minus 1."
let n: uint = node.NodeType() as uint - 1;
@@ -336,15 +336,15 @@ impl<'a, 'b> PrivateTreeWalkerHelpers<'a, 'b> for JSRef<'a, TreeWalker> {
match self.filter {
FilterNone => Ok(NodeFilterConstants::FILTER_ACCEPT),
FilterNative(f) => Ok((*f)(node)),
- FilterJS(callback) => callback.AcceptNode_(self, node, RethrowExceptions)
+ FilterJS(callback) => callback.AcceptNode_(*self, node, RethrowExceptions)
}
}
- fn is_root_node(&self, node: &JSRef<'a, Node>) -> bool {
+ fn is_root_node(&self, node: JSRef<'a, Node>) -> bool {
JS::from_rooted(node) == self.root_node
}
- fn is_current_node(&self, node: &JSRef<'a, Node>) -> bool {
+ fn is_current_node(&self, node: JSRef<'a, Node>) -> bool {
JS::from_rooted(node) == self.current_node.get()
}
}
@@ -365,18 +365,18 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
// "1. Let node be the value of the currentNode attribute."
let mut node = self.current_node.get().root().clone();
// "2. While node is not null and is not root, run these substeps:"
- while !self.is_root_node(&node) {
+ while !self.is_root_node(node) {
// "1. Let node be node's parent."
match node.parent_node() {
Some(n) => {
node = n.root().clone();
// "2. If node is not null and filtering node returns FILTER_ACCEPT,
// then set the currentNode attribute to node, return node."
- match self.accept_node(&node) {
+ match self.accept_node(node) {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => {}
}
@@ -421,7 +421,7 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
// "1. Let node be the value of the currentNode attribute."
let mut node = self.current_node.get().root().clone();
// "2. While node is not root, run these substeps:"
- while !self.is_root_node(&node) {
+ while !self.is_root_node(node) {
// "1. Let sibling be the previous sibling of node."
let mut sibling_op = node.prev_sibling();
// "2. While sibling is not null, run these subsubsteps:"
@@ -435,14 +435,14 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
// "4. If result is FILTER_ACCEPT, then
// set the currentNode attribute to node and return node."
loop {
- match self.accept_node(&node) {
+ match self.accept_node(node) {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_REJECT) => break,
_ if node.first_child().is_some() =>
node = node.last_child().unwrap().root().clone(),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => break
}
@@ -451,7 +451,7 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
sibling_op = node.prev_sibling()
}
// "3. If node is root or node's parent is null, return null."
- if self.is_root_node(&node) || node.parent_node() == None {
+ if self.is_root_node(node) || node.parent_node() == None {
return Ok(None)
}
// "4. Set node to its parent."
@@ -464,11 +464,11 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
}
// "5. Filter node and if the return value is FILTER_ACCEPT, then
// set the currentNode attribute to node and return node."
- match self.accept_node(&node) {
+ match self.accept_node(node) {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => {}
}
@@ -497,14 +497,14 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
// "1. Set node to its first child."
node = child.root().clone();
// "2. Filter node and set result to the return value."
- result = self.accept_node(&node);
+ result = self.accept_node(node);
// "3. If result is FILTER_ACCEPT, then
// set the currentNode attribute to node and return node."
match result {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => {}
}
@@ -514,19 +514,19 @@ impl<'a> TreeWalkerHelpers<'a> for JSRef<'a, TreeWalker> {
// "2. If a node is following node and is not following root,
// set node to the first such node."
// "Otherwise, return null."
- match self.first_following_node_not_following_root(&node) {
+ match self.first_following_node_not_following_root(node) {
None => return Ok(None),
Some(n) => {
node = n.root().clone();
// "3. Filter node and set result to the return value."
- result = self.accept_node(&node);
+ result = self.accept_node(node);
// "4. If result is FILTER_ACCEPT, then
// set the currentNode attribute to node and return node."
match result {
Err(e) => return Err(e),
Ok(NodeFilterConstants::FILTER_ACCEPT) => {
- self.current_node.set(JS::from_rooted(&node));
- return Ok(Some(Temporary::from_rooted(&node)))
+ self.current_node.set(JS::from_rooted(node));
+ return Ok(Some(Temporary::from_rooted(node)))
},
_ => {}
}
@@ -555,7 +555,7 @@ impl<'a> Iterator<JSRef<'a, Node>> for JSRef<'a, TreeWalker> {
#[deriving(Encodable)]
pub enum Filter {
FilterNone,
- FilterNative(Untraceable<fn (node: &JSRef<Node>) -> u16>),
+ FilterNative(Untraceable<fn (node: JSRef<Node>) -> u16>),
FilterJS(NodeFilter)
}