diff options
Diffstat (limited to 'components/script/dom/url.rs')
-rw-r--r-- | components/script/dom/url.rs | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index 6438e258543..b8d1ae9335a 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -13,7 +13,7 @@ use dom::urlhelper::UrlHelper; use dom::urlsearchparams::URLSearchParams; use std::borrow::ToOwned; use std::default::Default; -use url::{Host, Url, UrlParser}; +use url::{Host, Url}; use util::str::DOMString; // https://url.spec.whatwg.org/#url @@ -42,8 +42,9 @@ impl URL { global, URLBinding::Wrap) } - pub fn set_query(&self, query: String) { - self.url.borrow_mut().query = Some(query); + pub fn set_query_pairs(&self, pairs: &[(String, String)]) { + let mut url = self.url.borrow_mut(); + url.query_pairs_mut().clear().extend_pairs(pairs); } } @@ -68,17 +69,11 @@ impl URL { } }; // Step 3. - let parsed_url = { - let mut parser = UrlParser::new(); - if let Some(parsed_base) = parsed_base.as_ref() { - parser.base_url(parsed_base); - } - match parser.parse(&url.0) { - Ok(url) => url, - Err(error) => { - // Step 4. - return Err(Error::Type(format!("could not parse URL: {}", error))); - } + let parsed_url = match Url::options().base_url(parsed_base.as_ref()).parse(&url.0) { + Ok(url) => url, + Err(error) => { + // Step 4. + return Err(Error::Type(format!("could not parse URL: {}", error))); } }; // Step 5: Skip (see step 8 below). @@ -207,7 +202,7 @@ impl URLMethods for URL { fn SetSearch(&self, value: USVString) { UrlHelper::SetSearch(&mut self.url.borrow_mut(), value); if let Some(search_params) = self.search_params.get() { - search_params.set_list(self.url.borrow().query_pairs().unwrap_or_else(|| vec![])); + search_params.set_list(self.url.borrow().query_pairs().into_owned().collect()); } } |