aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/url.rs42
1 files changed, 18 insertions, 24 deletions
diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs
index 06e1af5b133..6438e258543 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, ParseResult, Url, UrlParser};
+use url::{Host, Url, UrlParser};
use util::str::DOMString;
// https://url.spec.whatwg.org/#url
@@ -21,28 +21,24 @@ use util::str::DOMString;
pub struct URL {
reflector_: Reflector,
- // https://url.spec.whatwg.org/#concept-urlutils-url
+ // https://url.spec.whatwg.org/#concept-url-url
url: DOMRefCell<Url>,
- // https://url.spec.whatwg.org/#concept-urlutils-get-the-base
- base: Option<Url>,
-
// https://url.spec.whatwg.org/#dom-url-searchparams
search_params: MutNullableHeap<JS<URLSearchParams>>,
}
impl URL {
- fn new_inherited(url: Url, base: Option<Url>) -> URL {
+ fn new_inherited(url: Url) -> URL {
URL {
reflector_: Reflector::new(),
url: DOMRefCell::new(url),
- base: base,
search_params: Default::default(),
}
}
- pub fn new(global: GlobalRef, url: Url, base: Option<Url>) -> Root<URL> {
- reflect_dom_object(box URL::new_inherited(url, base),
+ pub fn new(global: GlobalRef, url: Url) -> Root<URL> {
+ reflect_dom_object(box URL::new_inherited(url),
global, URLBinding::Wrap)
}
@@ -72,16 +68,22 @@ impl URL {
}
};
// Step 3.
- let parsed_url = match parse_with_base(url, parsed_base.as_ref()) {
- Ok(url) => url,
- Err(error) => {
- // Step 4.
- return Err(Error::Type(format!("could not parse URL: {}", error)));
+ 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)));
+ }
}
};
// Step 5: Skip (see step 8 below).
// Steps 6-7.
- let result = URL::new(global, parsed_url, parsed_base);
+ let result = URL::new(global, parsed_url);
// Step 8: Instead of construcing a new `URLSearchParams` object here, construct it
// on-demand inside `URL::SearchParams`.
// Step 9.
@@ -140,7 +142,7 @@ impl URLMethods for URL {
// https://url.spec.whatwg.org/#dom-url-href
fn SetHref(&self, value: USVString) -> ErrorResult {
- match parse_with_base(value, self.base.as_ref()) {
+ match Url::parse(&value.0) {
Ok(url) => {
*self.url.borrow_mut() = url;
Ok(())
@@ -229,11 +231,3 @@ impl URLMethods for URL {
UrlHelper::SetUsername(&mut self.url.borrow_mut(), value);
}
}
-
-fn parse_with_base(input: USVString, base: Option<&Url>) -> ParseResult<Url> {
- let mut parser = UrlParser::new();
- if let Some(base) = base {
- parser.base_url(base);
- }
- parser.parse(&input.0)
-}