diff --git a/src/components/main/servo.rs b/src/components/main/servo.rs index e83762ecb36..944df69bd43 100644 --- a/src/components/main/servo.rs +++ b/src/components/main/servo.rs @@ -48,8 +48,9 @@ use servo_util::memory::MemoryProfiler; #[cfg(not(test))] use servo_util::opts; + #[cfg(not(test))] -use servo_util::url::parse_url; +use url::{Url, UrlParser}; #[cfg(not(test), not(target_os="android"))] @@ -132,9 +133,12 @@ pub fn run(opts: opts::Opts) { font_cache_task, time_profiler_chan_clone); + let base_url = Url::from_directory_path(&os::getcwd()).unwrap(); + let mut url_parser = UrlParser::new(); + let url_parser = url_parser.base_url(&base_url); // Send the URL command to the constellation. - for filename in opts.urls.iter() { - let url = parse_url(filename.as_slice(), None); + for url in opts.urls.iter() { + let url = url_parser.parse(url.as_slice()).ok().expect("URL parsing failed"); let ConstellationChan(ref chan) = constellation_chan; chan.send(InitLoadUrlMsg(url)); diff --git a/src/components/util/url.rs b/src/components/util/url.rs index 5e1a65036f7..7e153b3257c 100644 --- a/src/components/util/url.rs +++ b/src/components/util/url.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use std::collections::hashmap::HashMap; -use std::os; use rust_url; use rust_url::{Url, UrlParser}; @@ -23,25 +22,6 @@ pub fn try_parse_url(str_url: &str, base_url: Option) -> Result &*parser.base_url(base), None => &parser, }; - let str_url = match parser.parse(str_url) { - Err(err) => { - 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.as_slice().starts_with("/") { - format!("file://{}", str_url) - } else { - let mut path = os::getcwd(); - path.push(str_url); - // FIXME (#1094): not the right way to transform a path - format!("file://{}", path.display().to_str()) - } - } else { - return Err(err) - } - }, - Ok(url) => return Ok(url) - }; parser.parse(str_url.as_slice()) }