refactored url handling code in script task to be more idiomatic

This commit is contained in:
Tim Kuehn 2013-07-10 16:56:59 -07:00
parent 1a4ea09205
commit 4815d8fccd

View file

@ -595,7 +595,7 @@ impl ScriptTask {
match self.query_layout(HitTestQuery(root, point, chan), port) { match self.query_layout(HitTestQuery(root, point, chan), port) {
Ok(node) => match node { Ok(node) => match node {
HitTestResponse(node) => { HitTestResponse(node) => {
debug!("clicked on %?", node.debug_str()); debug!("clicked on %s", node.debug_str());
let mut node = node; let mut node = node;
// traverse node generations until a node that is an element is found // traverse node generations until a node that is an element is found
while !node.is_element() { while !node.is_element() {
@ -608,9 +608,8 @@ impl ScriptTask {
} }
if node.is_element() { if node.is_element() {
do node.with_imm_element |element| { do node.with_imm_element |element| {
match element.tag_name { if "a" == element.tag_name {
~"a" => self.load_url_from_element(element), self.load_url_from_element(element)
_ => {}
} }
} }
} }
@ -628,16 +627,14 @@ impl ScriptTask {
priv fn load_url_from_element(&self, element: &Element) { priv fn load_url_from_element(&self, element: &Element) {
// if the node's element is "a," load url from href attr // if the node's element is "a," load url from href attr
for element.attrs.iter().advance |attr| { let href = element.get_attr("href");
if attr.name == ~"href" { for href.iter().advance |href| {
debug!("clicked on link to %?", attr.value); debug!("clicked on link to %s", *href);
let current_url = match self.root_frame { let current_url = do self.root_frame.map |frame| {
Some(ref frame) => Some(frame.url.clone()), frame.url.clone()
None => None };
}; let url = make_url(href.to_owned(), current_url);
let url = make_url(attr.value.clone(), current_url); self.constellation_chan.send(LoadUrlMsg(url));
self.constellation_chan.send(LoadUrlMsg(url));
}
} }
} }
} }