diff options
author | Tim Kuehn <tkuehn@cmu.edu> | 2013-06-06 16:09:23 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2013-06-12 11:02:51 -0700 |
commit | ff1178f7ca6cf6ec89b79b38f0dc3bb226462841 (patch) | |
tree | 221adaaf1358889bc2a7ba623efcb8e6ee64cf43 /src/components/script | |
parent | bf4df245215b1ffe90fab9e7b4781098db708c78 (diff) | |
download | servo-ff1178f7ca6cf6ec89b79b38f0dc3bb226462841.tar.gz servo-ff1178f7ca6cf6ec89b79b38f0dc3bb226462841.zip |
handle relative url's when clicking
Diffstat (limited to 'src/components/script')
-rw-r--r-- | src/components/script/script_task.rs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 716440dfffe..0482febe570 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -39,7 +39,8 @@ use js; use servo_net::image_cache_task::ImageCacheTask; use servo_net::resource_task::ResourceTask; use servo_util::tree::TreeNodeRef; -use std::net::url::{Url, from_str}; +use servo_util::url::make_url; +use std::net::url::Url; use std::net::url; /// Messages used to control the script task. @@ -559,12 +560,12 @@ impl ScriptContext { for element.attrs.each |attr| { if attr.name == ~"href" { debug!("clicked on link to %?", attr.value); - let url = from_str(attr.value); - match url { - Ok(url) => self.engine_task.send(LoadUrlMsg(url)), - Err(msg) => debug!(msg) + let current_url = match self.root_frame { + Some(ref frame) => Some(frame.url.clone()), + None => None }; - break; + let url = make_url(attr.value.clone(), current_url); + self.engine_task.send(LoadUrlMsg(url)); } } } |