mirror of
https://github.com/servo/servo.git
synced 2025-06-20 15:18:58 +01:00
Rename make_url/current_url to parse_url/base_url, to align with spec terminology.
This commit is contained in:
parent
39e781bcc7
commit
33f8ef618b
8 changed files with 60 additions and 60 deletions
|
@ -563,7 +563,7 @@ impl IOCompositor {
|
||||||
None => fail!("Compositor: Received LoadUrlWindowEvent without initialized compositor layers"),
|
None => fail!("Compositor: Received LoadUrlWindowEvent without initialized compositor layers"),
|
||||||
};
|
};
|
||||||
|
|
||||||
let msg = LoadUrlMsg(root_pipeline_id, url::make_url(url_string.to_str(), None));
|
let msg = LoadUrlMsg(root_pipeline_id, url::parse_url(url_string.to_str(), None));
|
||||||
self.constellation_chan.send(msg);
|
self.constellation_chan.send(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient};
|
||||||
use servo_net::resource_task::ResourceTask;
|
use servo_net::resource_task::ResourceTask;
|
||||||
use servo_net::resource_task;
|
use servo_net::resource_task;
|
||||||
use servo_util::time::ProfilerChan;
|
use servo_util::time::ProfilerChan;
|
||||||
use servo_util::url::make_url;
|
use servo_util::url::parse_url;
|
||||||
use servo_util::task::spawn_named;
|
use servo_util::task::spawn_named;
|
||||||
use std::hashmap::{HashMap, HashSet};
|
use std::hashmap::{HashMap, HashSet};
|
||||||
use std::util::replace;
|
use std::util::replace;
|
||||||
|
@ -391,7 +391,7 @@ impl Constellation {
|
||||||
self.window_size,
|
self.window_size,
|
||||||
self.opts.clone());
|
self.opts.clone());
|
||||||
let failure = ~"about:failure";
|
let failure = ~"about:failure";
|
||||||
let url = make_url(failure, None);
|
let url = parse_url(failure, None);
|
||||||
pipeline.load(url);
|
pipeline.load(url);
|
||||||
|
|
||||||
let frames = self.find_all(pipeline_id);
|
let frames = self.find_all(pipeline_id);
|
||||||
|
|
|
@ -58,7 +58,7 @@ use servo_util::time::Profiler;
|
||||||
|
|
||||||
pub use gfx::opts::Opts;
|
pub use gfx::opts::Opts;
|
||||||
pub use gfx::text;
|
pub use gfx::text;
|
||||||
pub use servo_util::url::make_url;
|
pub use servo_util::url::parse_url;
|
||||||
|
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
use std::os;
|
use std::os;
|
||||||
|
@ -158,7 +158,7 @@ fn run(opts: Opts) {
|
||||||
|
|
||||||
// Send the URL command to the constellation.
|
// Send the URL command to the constellation.
|
||||||
for filename in opts.urls.iter() {
|
for filename in opts.urls.iter() {
|
||||||
constellation_chan.send(InitLoadUrlMsg(make_url(filename.clone(), None)))
|
constellation_chan.send(InitLoadUrlMsg(parse_url(filename.clone(), None)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the constallation Chan as the result
|
// Send the constallation Chan as the result
|
||||||
|
|
|
@ -487,14 +487,14 @@ mod tests {
|
||||||
use resource_task::{ResourceTask, Metadata, start_sending};
|
use resource_task::{ResourceTask, Metadata, start_sending};
|
||||||
use image::base::test_image_bin;
|
use image::base::test_image_bin;
|
||||||
use util::spawn_listener;
|
use util::spawn_listener;
|
||||||
use servo_util::url::make_url;
|
use servo_util::url::parse_url;
|
||||||
|
|
||||||
fn mock_resource_task(on_load: proc(resource: SharedChan<resource_task::ProgressMsg>)) -> ResourceTask {
|
fn mock_resource_task(on_load: proc(resource: SharedChan<resource_task::ProgressMsg>)) -> ResourceTask {
|
||||||
spawn_listener("mock_resource_task", proc(port: Port<resource_task::ControlMsg>) {
|
spawn_listener("mock_resource_task", proc(port: Port<resource_task::ControlMsg>) {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
let chan = start_sending(response, Metadata::default(make_url(~"file:///fake", None)));
|
let chan = start_sending(response, Metadata::default(parse_url(~"file:///fake", None)));
|
||||||
on_load(chan);
|
on_load(chan);
|
||||||
}
|
}
|
||||||
resource_task::Exit => break
|
resource_task::Exit => break
|
||||||
|
@ -508,7 +508,7 @@ mod tests {
|
||||||
let mock_resource_task = mock_resource_task(proc(_response) {});
|
let mock_resource_task = mock_resource_task(proc(_response) {});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let _url = make_url(~"file", None);
|
let _url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.exit();
|
image_cache_task.exit();
|
||||||
mock_resource_task.send(resource_task::Exit);
|
mock_resource_task.send(resource_task::Exit);
|
||||||
|
@ -520,7 +520,7 @@ mod tests {
|
||||||
let mock_resource_task = mock_resource_task(proc(_response) {});
|
let mock_resource_task = mock_resource_task(proc(_response) {});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let (port, chan) = Chan::new();
|
let (port, chan) = Chan::new();
|
||||||
image_cache_task.send(GetImage(url, chan));
|
image_cache_task.send(GetImage(url, chan));
|
||||||
|
@ -537,7 +537,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url));
|
image_cache_task.send(Prefetch(url));
|
||||||
url_requested.recv();
|
url_requested.recv();
|
||||||
|
@ -555,7 +555,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Prefetch(url));
|
image_cache_task.send(Prefetch(url));
|
||||||
|
@ -578,7 +578,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Decode(url.clone()));
|
image_cache_task.send(Decode(url.clone()));
|
||||||
|
@ -598,7 +598,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store();
|
let join_port = image_cache_task.wait_for_store();
|
||||||
|
|
||||||
|
@ -627,7 +627,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store();
|
let join_port = image_cache_task.wait_for_store();
|
||||||
|
|
||||||
|
@ -660,7 +660,7 @@ mod tests {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
let chan = start_sending(response, Metadata::default(make_url(~"file:///fake", None)));
|
let chan = start_sending(response, Metadata::default(parse_url(~"file:///fake", None)));
|
||||||
chan.send(resource_task::Payload(test_image_bin()));
|
chan.send(resource_task::Payload(test_image_bin()));
|
||||||
chan.send(resource_task::Done(Ok(())));
|
chan.send(resource_task::Done(Ok(())));
|
||||||
image_bin_sent_chan.send(());
|
image_bin_sent_chan.send(());
|
||||||
|
@ -674,7 +674,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
|
|
||||||
|
@ -703,7 +703,7 @@ mod tests {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
let chan = start_sending(response, Metadata::default(make_url(~"file:///fake", None)));
|
let chan = start_sending(response, Metadata::default(parse_url(~"file:///fake", None)));
|
||||||
chan.send(resource_task::Payload(test_image_bin()));
|
chan.send(resource_task::Payload(test_image_bin()));
|
||||||
chan.send(resource_task::Done(Err(())));
|
chan.send(resource_task::Done(Err(())));
|
||||||
image_bin_sent_chan.send(());
|
image_bin_sent_chan.send(());
|
||||||
|
@ -717,7 +717,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Decode(url.clone()));
|
image_cache_task.send(Decode(url.clone()));
|
||||||
|
@ -747,7 +747,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store_prefetched();
|
let join_port = image_cache_task.wait_for_store_prefetched();
|
||||||
|
|
||||||
|
@ -777,7 +777,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store_prefetched();
|
let join_port = image_cache_task.wait_for_store_prefetched();
|
||||||
|
|
||||||
|
@ -815,7 +815,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store();
|
let join_port = image_cache_task.wait_for_store();
|
||||||
|
|
||||||
|
@ -846,7 +846,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
let join_port = image_cache_task.wait_for_store();
|
let join_port = image_cache_task.wait_for_store();
|
||||||
|
|
||||||
|
@ -878,7 +878,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Decode(url.clone()));
|
image_cache_task.send(Decode(url.clone()));
|
||||||
|
@ -908,7 +908,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Decode(url.clone()));
|
image_cache_task.send(Decode(url.clone()));
|
||||||
|
@ -935,7 +935,7 @@ mod tests {
|
||||||
});
|
});
|
||||||
|
|
||||||
let image_cache_task = SyncImageCacheTask(mock_resource_task.clone());
|
let image_cache_task = SyncImageCacheTask(mock_resource_task.clone());
|
||||||
let url = make_url(~"file", None);
|
let url = parse_url(~"file", None);
|
||||||
|
|
||||||
image_cache_task.send(Prefetch(url.clone()));
|
image_cache_task.send(Prefetch(url.clone()));
|
||||||
image_cache_task.send(Decode(url.clone()));
|
image_cache_task.send(Decode(url.clone()));
|
||||||
|
|
|
@ -13,7 +13,7 @@ use servo_util::geometry::to_px;
|
||||||
use layout_interface::{ContentBoxQuery, ContentBoxResponse};
|
use layout_interface::{ContentBoxQuery, ContentBoxResponse};
|
||||||
use servo_net::image_cache_task;
|
use servo_net::image_cache_task;
|
||||||
use servo_net::image_cache_task::ImageCacheTask;
|
use servo_net::image_cache_task::ImageCacheTask;
|
||||||
use servo_util::url::make_url;
|
use servo_util::url::parse_url;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
|
|
||||||
pub struct HTMLImageElement {
|
pub struct HTMLImageElement {
|
||||||
|
@ -44,7 +44,7 @@ impl HTMLImageElement {
|
||||||
match src_opt {
|
match src_opt {
|
||||||
None => {}
|
None => {}
|
||||||
Some(src) => {
|
Some(src) => {
|
||||||
let img_url = make_url(src, url);
|
let img_url = parse_url(src, url);
|
||||||
self.image = Some(img_url.clone());
|
self.image = Some(img_url.clone());
|
||||||
|
|
||||||
// inform the image cache to load this, but don't store a
|
// inform the image cache to load this, but don't store a
|
||||||
|
|
|
@ -19,7 +19,7 @@ use js::jsapi::JSContext;
|
||||||
use servo_msg::constellation_msg::SubpageId;
|
use servo_msg::constellation_msg::SubpageId;
|
||||||
use servo_net::image_cache_task::ImageCacheTask;
|
use servo_net::image_cache_task::ImageCacheTask;
|
||||||
use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_resource};
|
use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_resource};
|
||||||
use servo_util::url::make_url;
|
use servo_util::url::parse_url;
|
||||||
use servo_util::task::spawn_named;
|
use servo_util::task::spawn_named;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
use std::cast;
|
use std::cast;
|
||||||
|
@ -343,7 +343,7 @@ pub fn parse_html(cx: *JSContext,
|
||||||
(Some(rel), Some(href)) => {
|
(Some(rel), Some(href)) => {
|
||||||
if "stylesheet" == rel.value_ref() {
|
if "stylesheet" == rel.value_ref() {
|
||||||
debug!("found CSS stylesheet: {:s}", href.value_ref());
|
debug!("found CSS stylesheet: {:s}", href.value_ref());
|
||||||
let url = make_url(href.Value(), Some(url2.clone()));
|
let url = parse_url(href.Value(), Some(url2.clone()));
|
||||||
css_chan2.send(CSSTaskNewFile(UrlProvenance(url)));
|
css_chan2.send(CSSTaskNewFile(UrlProvenance(url)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -359,7 +359,7 @@ pub fn parse_html(cx: *JSContext,
|
||||||
let elem = &mut iframe_element.htmlelement.element;
|
let elem = &mut iframe_element.htmlelement.element;
|
||||||
let src_opt = elem.get_attribute(Null, "src").map(|x| x.Value());
|
let src_opt = elem.get_attribute(Null, "src").map(|x| x.Value());
|
||||||
for src in src_opt.iter() {
|
for src in src_opt.iter() {
|
||||||
let iframe_url = make_url(src.clone(), Some(url2.clone()));
|
let iframe_url = parse_url(src.clone(), Some(url2.clone()));
|
||||||
iframe_element.frame = Some(iframe_url.clone());
|
iframe_element.frame = Some(iframe_url.clone());
|
||||||
|
|
||||||
// Subpage Id
|
// Subpage Id
|
||||||
|
@ -457,7 +457,7 @@ pub fn parse_html(cx: *JSContext,
|
||||||
match script.get_attribute(Null, "src") {
|
match script.get_attribute(Null, "src") {
|
||||||
Some(src) => {
|
Some(src) => {
|
||||||
debug!("found script: {:s}", src.Value());
|
debug!("found script: {:s}", src.Value());
|
||||||
let new_url = make_url(src.Value(), Some(url3.clone()));
|
let new_url = parse_url(src.Value(), Some(url3.clone()));
|
||||||
js_chan2.send(JSTaskNewFile(new_url));
|
js_chan2.send(JSTaskNewFile(new_url));
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
|
|
@ -44,7 +44,7 @@ use servo_msg::constellation_msg;
|
||||||
use servo_net::image_cache_task::ImageCacheTask;
|
use servo_net::image_cache_task::ImageCacheTask;
|
||||||
use servo_net::resource_task::ResourceTask;
|
use servo_net::resource_task::ResourceTask;
|
||||||
use servo_util::geometry::to_frac_px;
|
use servo_util::geometry::to_frac_px;
|
||||||
use servo_util::url::make_url;
|
use servo_util::url::parse_url;
|
||||||
use servo_util::task::spawn_named;
|
use servo_util::task::spawn_named;
|
||||||
use servo_util::namespace::Null;
|
use servo_util::namespace::Null;
|
||||||
use std::comm::{Port, SharedChan};
|
use std::comm::{Port, SharedChan};
|
||||||
|
@ -891,11 +891,11 @@ impl ScriptTask {
|
||||||
for href in attr.iter() {
|
for href in attr.iter() {
|
||||||
debug!("ScriptTask: clicked on link to {:s}", href.Value());
|
debug!("ScriptTask: clicked on link to {:s}", href.Value());
|
||||||
let click_frag = href.value_ref().starts_with("#");
|
let click_frag = href.value_ref().starts_with("#");
|
||||||
let current_url = page.url.as_ref().map(|&(ref url, _)| {
|
let base_url = page.url.as_ref().map(|&(ref url, _)| {
|
||||||
url.clone()
|
url.clone()
|
||||||
});
|
});
|
||||||
debug!("ScriptTask: current url is {:?}", current_url);
|
debug!("ScriptTask: current url is {:?}", base_url);
|
||||||
let url = make_url(href.Value(), current_url);
|
let url = parse_url(href.Value(), base_url);
|
||||||
|
|
||||||
if click_frag {
|
if click_frag {
|
||||||
match self.find_fragment_node(page, url.fragment.unwrap()) {
|
match self.find_fragment_node(page, url.fragment.unwrap()) {
|
||||||
|
|
|
@ -17,12 +17,12 @@ Create a URL object from a string. Does various helpful browsery things like
|
||||||
|
|
||||||
*/
|
*/
|
||||||
// TODO: about:failure->
|
// TODO: about:failure->
|
||||||
pub fn make_url(str_url: &str, current_url: Option<Url>) -> Url {
|
pub fn parse_url(str_url: &str, base_url: Option<Url>) -> Url {
|
||||||
let str_url = str_url.trim_chars(& &[' ', '\t', '\n', '\r', '\x0C']).to_owned();
|
let str_url = str_url.trim_chars(& &[' ', '\t', '\n', '\r', '\x0C']).to_owned();
|
||||||
let schm = url::get_scheme(str_url);
|
let schm = url::get_scheme(str_url);
|
||||||
let str_url = match schm {
|
let str_url = match schm {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
if current_url.is_none() {
|
if base_url.is_none() {
|
||||||
// Assume we've been given a file path. If it's absolute just return
|
// Assume we've been given a file path. If it's absolute just return
|
||||||
// it, otherwise make it absolute with the cwd.
|
// it, otherwise make it absolute with the cwd.
|
||||||
if str_url.starts_with("/") {
|
if str_url.starts_with("/") {
|
||||||
|
@ -34,22 +34,22 @@ pub fn make_url(str_url: &str, current_url: Option<Url>) -> Url {
|
||||||
~"file://" + path.display().to_str()
|
~"file://" + path.display().to_str()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let current_url = current_url.unwrap();
|
let base_url = base_url.unwrap();
|
||||||
debug!("make_url: current_url: {:?}", current_url);
|
debug!("parse_url: base_url: {:?}", base_url);
|
||||||
|
|
||||||
let mut new_url = current_url.clone();
|
let mut new_url = base_url.clone();
|
||||||
new_url.query = ~[];
|
new_url.query = ~[];
|
||||||
new_url.fragment = None;
|
new_url.fragment = None;
|
||||||
|
|
||||||
if str_url.starts_with("//") {
|
if str_url.starts_with("//") {
|
||||||
new_url.scheme + ":" + str_url
|
new_url.scheme + ":" + str_url
|
||||||
} else if current_url.path.is_empty() || str_url.starts_with("/") {
|
} else if base_url.path.is_empty() || str_url.starts_with("/") {
|
||||||
new_url.path = ~"/";
|
new_url.path = ~"/";
|
||||||
new_url.to_str() + str_url.trim_left_chars(&'/')
|
new_url.to_str() + str_url.trim_left_chars(&'/')
|
||||||
} else if str_url.starts_with("#") {
|
} else if str_url.starts_with("#") {
|
||||||
new_url.to_str() + str_url
|
new_url.to_str() + str_url
|
||||||
} else { // relative path
|
} else { // relative path
|
||||||
let base_path = current_url.path.trim_right_chars(&|c: char| c != '/');
|
let base_path = base_url.path.trim_right_chars(&|c: char| c != '/');
|
||||||
new_url.path = base_path.to_owned();
|
new_url.path = base_path.to_owned();
|
||||||
new_url.to_str() + str_url
|
new_url.to_str() + str_url
|
||||||
}
|
}
|
||||||
|
@ -85,14 +85,14 @@ pub fn make_url(str_url: &str, current_url: Option<Url>) -> Url {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod make_url_tests {
|
mod parse_url_tests {
|
||||||
use super::make_url;
|
use super::parse_url;
|
||||||
use std::os;
|
use std::os;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_absolute_file_url_if_current_url_is_none_and_str_url_looks_filey() {
|
fn should_create_absolute_file_url_if_base_url_is_none_and_str_url_looks_filey() {
|
||||||
let file = ~"local.html";
|
let file = ~"local.html";
|
||||||
let url = make_url(file, None);
|
let url = parse_url(file, None);
|
||||||
debug!("url: {:?}", url);
|
debug!("url: {:?}", url);
|
||||||
assert!(url.scheme == ~"file");
|
assert!(url.scheme == ~"file");
|
||||||
let path = os::getcwd();
|
let path = os::getcwd();
|
||||||
|
@ -103,9 +103,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_1() {
|
fn should_create_url_based_on_old_url_1() {
|
||||||
let old_str = ~"http://example.com";
|
let old_str = ~"http://example.com";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"index.html";
|
let new_str = ~"index.html";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
assert!(new_url.path == ~"/index.html");
|
assert!(new_url.path == ~"/index.html");
|
||||||
|
@ -114,9 +114,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_2() {
|
fn should_create_url_based_on_old_url_2() {
|
||||||
let old_str = ~"http://example.com/";
|
let old_str = ~"http://example.com/";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"index.html";
|
let new_str = ~"index.html";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
assert!(new_url.path == ~"/index.html");
|
assert!(new_url.path == ~"/index.html");
|
||||||
|
@ -125,9 +125,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_3() {
|
fn should_create_url_based_on_old_url_3() {
|
||||||
let old_str = ~"http://example.com/index.html";
|
let old_str = ~"http://example.com/index.html";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"crumpet.html";
|
let new_str = ~"crumpet.html";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
assert!(new_url.path == ~"/crumpet.html");
|
assert!(new_url.path == ~"/crumpet.html");
|
||||||
|
@ -136,9 +136,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_4() {
|
fn should_create_url_based_on_old_url_4() {
|
||||||
let old_str = ~"http://example.com/snarf/index.html";
|
let old_str = ~"http://example.com/snarf/index.html";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"crumpet.html";
|
let new_str = ~"crumpet.html";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
assert!(new_url.path == ~"/snarf/crumpet.html");
|
assert!(new_url.path == ~"/snarf/crumpet.html");
|
||||||
|
@ -147,9 +147,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_5() {
|
fn should_create_url_based_on_old_url_5() {
|
||||||
let old_str = ~"http://example.com/index.html";
|
let old_str = ~"http://example.com/index.html";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"#top";
|
let new_str = ~"#top";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
|
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
|
@ -162,9 +162,9 @@ mod make_url_tests {
|
||||||
use extra::url::UserInfo;
|
use extra::url::UserInfo;
|
||||||
|
|
||||||
let old_str = ~"http://foo:bar@example.com:8080/index.html";
|
let old_str = ~"http://foo:bar@example.com:8080/index.html";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"#top";
|
let new_str = ~"#top";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
|
|
||||||
assert!(new_url.scheme == ~"http");
|
assert!(new_url.scheme == ~"http");
|
||||||
assert!(new_url.user == Some(UserInfo { user: ~"foo", pass: Some(~"bar") }));
|
assert!(new_url.user == Some(UserInfo { user: ~"foo", pass: Some(~"bar") }));
|
||||||
|
@ -177,9 +177,9 @@ mod make_url_tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn should_create_url_based_on_old_url_7() {
|
fn should_create_url_based_on_old_url_7() {
|
||||||
let old_str = ~"https://example.com/snarf/index.html";
|
let old_str = ~"https://example.com/snarf/index.html";
|
||||||
let old_url = make_url(old_str, None);
|
let old_url = parse_url(old_str, None);
|
||||||
let new_str = ~"//example.com/crumpet.html";
|
let new_str = ~"//example.com/crumpet.html";
|
||||||
let new_url = make_url(new_str, Some(old_url));
|
let new_url = parse_url(new_str, Some(old_url));
|
||||||
assert!(new_url.scheme == ~"https");
|
assert!(new_url.scheme == ~"https");
|
||||||
assert!(new_url.host == ~"example.com");
|
assert!(new_url.host == ~"example.com");
|
||||||
assert!(new_url.path == ~"/crumpet.html");
|
assert!(new_url.path == ~"/crumpet.html");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue