diff --git a/src/components/main/compositing/compositor.rs b/src/components/main/compositing/compositor.rs index 99a4ef88c2a..d29e2e998bd 100644 --- a/src/components/main/compositing/compositor.rs +++ b/src/components/main/compositing/compositor.rs @@ -563,7 +563,7 @@ impl IOCompositor { 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); } diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs index 761abfb6164..d8c516f1b7a 100644 --- a/src/components/main/constellation.rs +++ b/src/components/main/constellation.rs @@ -20,7 +20,7 @@ use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient}; use servo_net::resource_task::ResourceTask; use servo_net::resource_task; use servo_util::time::ProfilerChan; -use servo_util::url::make_url; +use servo_util::url::parse_url; use servo_util::task::spawn_named; use std::hashmap::{HashMap, HashSet}; use std::util::replace; @@ -391,7 +391,7 @@ impl Constellation { self.window_size, self.opts.clone()); let failure = ~"about:failure"; - let url = make_url(failure, None); + let url = parse_url(failure, None); pipeline.load(url); let frames = self.find_all(pipeline_id); diff --git a/src/components/main/servo.rc b/src/components/main/servo.rc index b92f29893fc..700916103db 100755 --- a/src/components/main/servo.rc +++ b/src/components/main/servo.rc @@ -58,7 +58,7 @@ use servo_util::time::Profiler; pub use gfx::opts::Opts; pub use gfx::text; -pub use servo_util::url::make_url; +pub use servo_util::url::parse_url; #[cfg(not(test))] use std::os; @@ -158,7 +158,7 @@ fn run(opts: Opts) { // Send the URL command to the constellation. 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 diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs index 6badcee2c17..4f107535345 100644 --- a/src/components/net/image_cache_task.rs +++ b/src/components/net/image_cache_task.rs @@ -487,14 +487,14 @@ mod tests { use resource_task::{ResourceTask, Metadata, start_sending}; use image::base::test_image_bin; 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)) -> ResourceTask { spawn_listener("mock_resource_task", proc(port: Port) { loop { match port.recv() { 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); } resource_task::Exit => break @@ -508,7 +508,7 @@ mod tests { let mock_resource_task = mock_resource_task(proc(_response) {}); 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(); mock_resource_task.send(resource_task::Exit); @@ -520,7 +520,7 @@ mod tests { let mock_resource_task = mock_resource_task(proc(_response) {}); 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(); image_cache_task.send(GetImage(url, chan)); @@ -537,7 +537,7 @@ mod tests { }); 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)); url_requested.recv(); @@ -555,7 +555,7 @@ mod tests { }); 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)); @@ -578,7 +578,7 @@ mod tests { }); 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(Decode(url.clone())); @@ -598,7 +598,7 @@ mod tests { }); 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(); @@ -627,7 +627,7 @@ mod tests { }); 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(); @@ -660,7 +660,7 @@ mod tests { loop { match port.recv() { 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::Done(Ok(()))); image_bin_sent_chan.send(()); @@ -674,7 +674,7 @@ mod tests { }); 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())); @@ -703,7 +703,7 @@ mod tests { loop { match port.recv() { 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::Done(Err(()))); image_bin_sent_chan.send(()); @@ -717,7 +717,7 @@ mod tests { }); 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(Decode(url.clone())); @@ -747,7 +747,7 @@ mod tests { }); 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(); @@ -777,7 +777,7 @@ mod tests { }); 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(); @@ -815,7 +815,7 @@ mod tests { }); 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(); @@ -846,7 +846,7 @@ mod tests { }); 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(); @@ -878,7 +878,7 @@ mod tests { }); 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(Decode(url.clone())); @@ -908,7 +908,7 @@ mod tests { }); 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(Decode(url.clone())); @@ -935,7 +935,7 @@ mod tests { }); 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(Decode(url.clone())); diff --git a/src/components/script/dom/htmlimageelement.rs b/src/components/script/dom/htmlimageelement.rs index dd0c5514472..c7272e49431 100644 --- a/src/components/script/dom/htmlimageelement.rs +++ b/src/components/script/dom/htmlimageelement.rs @@ -13,7 +13,7 @@ use servo_util::geometry::to_px; use layout_interface::{ContentBoxQuery, ContentBoxResponse}; use servo_net::image_cache_task; use servo_net::image_cache_task::ImageCacheTask; -use servo_util::url::make_url; +use servo_util::url::parse_url; use servo_util::namespace::Null; pub struct HTMLImageElement { @@ -44,7 +44,7 @@ impl HTMLImageElement { match src_opt { None => {} Some(src) => { - let img_url = make_url(src, url); + let img_url = parse_url(src, url); self.image = Some(img_url.clone()); // inform the image cache to load this, but don't store a diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index c9817dbd6ff..3f5b8b2d9c1 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -19,7 +19,7 @@ use js::jsapi::JSContext; use servo_msg::constellation_msg::SubpageId; use servo_net::image_cache_task::ImageCacheTask; 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::namespace::Null; use std::cast; @@ -343,7 +343,7 @@ pub fn parse_html(cx: *JSContext, (Some(rel), Some(href)) => { if "stylesheet" == rel.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))); } } @@ -359,7 +359,7 @@ pub fn parse_html(cx: *JSContext, let elem = &mut iframe_element.htmlelement.element; let src_opt = elem.get_attribute(Null, "src").map(|x| x.Value()); 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()); // Subpage Id @@ -457,7 +457,7 @@ pub fn parse_html(cx: *JSContext, match script.get_attribute(Null, "src") { Some(src) => { 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)); } None => { diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 639f0cc15d9..4783682c7fe 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -44,7 +44,7 @@ use servo_msg::constellation_msg; use servo_net::image_cache_task::ImageCacheTask; use servo_net::resource_task::ResourceTask; 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::namespace::Null; use std::comm::{Port, SharedChan}; @@ -891,11 +891,11 @@ impl ScriptTask { for href in attr.iter() { debug!("ScriptTask: clicked on link to {:s}", href.Value()); 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() }); - debug!("ScriptTask: current url is {:?}", current_url); - let url = make_url(href.Value(), current_url); + debug!("ScriptTask: current url is {:?}", base_url); + let url = parse_url(href.Value(), base_url); if click_frag { match self.find_fragment_node(page, url.fragment.unwrap()) { diff --git a/src/components/util/url.rs b/src/components/util/url.rs index 20006eca6e0..2dbc2c64831 100644 --- a/src/components/util/url.rs +++ b/src/components/util/url.rs @@ -17,12 +17,12 @@ Create a URL object from a string. Does various helpful browsery things like */ // TODO: about:failure-> -pub fn make_url(str_url: &str, current_url: Option) -> Url { +pub fn parse_url(str_url: &str, base_url: Option) -> Url { let str_url = str_url.trim_chars(& &[' ', '\t', '\n', '\r', '\x0C']).to_owned(); let schm = url::get_scheme(str_url); let str_url = match schm { 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 // it, otherwise make it absolute with the cwd. if str_url.starts_with("/") { @@ -34,22 +34,22 @@ pub fn make_url(str_url: &str, current_url: Option) -> Url { ~"file://" + path.display().to_str() } } else { - let current_url = current_url.unwrap(); - debug!("make_url: current_url: {:?}", current_url); + let base_url = base_url.unwrap(); + 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.fragment = None; if str_url.starts_with("//") { 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.to_str() + str_url.trim_left_chars(&'/') } else if str_url.starts_with("#") { new_url.to_str() + str_url } 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.to_str() + str_url } @@ -85,14 +85,14 @@ pub fn make_url(str_url: &str, current_url: Option) -> Url { } #[cfg(test)] -mod make_url_tests { - use super::make_url; +mod parse_url_tests { + use super::parse_url; use std::os; #[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 url = make_url(file, None); + let url = parse_url(file, None); debug!("url: {:?}", url); assert!(url.scheme == ~"file"); let path = os::getcwd(); @@ -103,9 +103,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_1() { 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_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.host == ~"example.com"); assert!(new_url.path == ~"/index.html"); @@ -114,9 +114,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_2() { 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_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.host == ~"example.com"); assert!(new_url.path == ~"/index.html"); @@ -125,9 +125,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_3() { 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_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.host == ~"example.com"); assert!(new_url.path == ~"/crumpet.html"); @@ -136,9 +136,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_4() { 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_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.host == ~"example.com"); assert!(new_url.path == ~"/snarf/crumpet.html"); @@ -147,9 +147,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_5() { 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_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.host == ~"example.com"); @@ -162,9 +162,9 @@ mod make_url_tests { use extra::url::UserInfo; 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_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.user == Some(UserInfo { user: ~"foo", pass: Some(~"bar") })); @@ -177,9 +177,9 @@ mod make_url_tests { #[test] fn should_create_url_based_on_old_url_7() { 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_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.host == ~"example.com"); assert!(new_url.path == ~"/crumpet.html");