diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2015-07-28 19:08:35 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2015-09-24 18:54:53 -0700 |
commit | 5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8 (patch) | |
tree | fe5a211ae050f2a5aa79e8d606ffcf46d557c792 /components | |
parent | 4d1be2f56cd7a37c4c803ba12733fca55b57d4de (diff) | |
download | servo-5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8.tar.gz servo-5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8.zip |
script: Stop copying the document URL.
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/document.rs | 15 | ||||
-rw-r--r-- | components/script/dom/htmlbaseelement.rs | 3 | ||||
-rw-r--r-- | components/script/dom/htmlbodyelement.rs | 3 | ||||
-rw-r--r-- | components/script/dom/htmlformelement.rs | 3 | ||||
-rw-r--r-- | components/script/dom/node.rs | 2 | ||||
-rw-r--r-- | components/script/dom/window.rs | 2 | ||||
-rw-r--r-- | components/script/script_task.rs | 2 | ||||
-rw-r--r-- | components/script/webdriver_handlers.rs | 5 |
8 files changed, 19 insertions, 16 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 70849da483f..db4c72af8dc 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -226,7 +226,6 @@ impl CollectionFilter for AppletsFilter { } } - impl Document { #[inline] pub fn loader(&self) -> Ref<DocumentLoader> { @@ -269,16 +268,16 @@ impl Document { } // https://dom.spec.whatwg.org/#concept-document-url - pub fn url(&self) -> Url { - self.url.clone() + pub fn url<'a>(&'a self) -> &'a Url { + &self.url } // https://html.spec.whatwg.org/multipage/#fallback-base-url - pub fn fallback_base_url(&self) -> Url { + pub fn fallback_base_url<'a>(&'a self) -> Url { // Step 1: iframe srcdoc (#4767). // Step 2: about:blank with a creator browsing context. // Step 3. - self.url() + self.url().clone() } // https://html.spec.whatwg.org/multipage/#document-base-url @@ -1735,7 +1734,7 @@ impl DocumentMethods for Document { } let window = self.window.root(); let (tx, rx) = ipc::channel().unwrap(); - let _ = window.r().resource_task().send(GetCookiesForUrl(url, tx, NonHTTP)); + let _ = window.r().resource_task().send(GetCookiesForUrl((*url).clone(), tx, NonHTTP)); let cookies = rx.recv().unwrap(); Ok(cookies.unwrap_or("".to_owned())) } @@ -1744,11 +1743,11 @@ impl DocumentMethods for Document { fn SetCookie(&self, cookie: DOMString) -> ErrorResult { //TODO: ignore for cookie-averse Document let url = self.url(); - if !is_scheme_host_port_tuple(&url) { + if !is_scheme_host_port_tuple(url) { return Err(Security); } let window = self.window.root(); - let _ = window.r().resource_task().send(SetCookiesForUrl(url, cookie, NonHTTP)); + let _ = window.r().resource_task().send(SetCookiesForUrl((*url).clone(), cookie, NonHTTP)); Ok(()) } diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index b67ec9a9381..be1826b83d5 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -50,7 +50,8 @@ impl HTMLBaseElement { let href = ElementCast::from_ref(self).get_attribute(&ns!(""), &atom!("href")) .expect("The frozen base url is only defined for base elements \ that have a base url."); - let base = document_from_node(self).fallback_base_url(); + let document = document_from_node(self); + let base = document.fallback_base_url(); let parsed = UrlParser::new().base_url(&base).parse(&href.value()); parsed.unwrap_or(base) } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 28f77b706e9..a86e1375453 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -133,7 +133,8 @@ impl VirtualMethods for HTMLBodyElement { }, (&atom!(background), _) => { *self.background.borrow_mut() = mutation.new_value(attr).and_then(|value| { - let base = document_from_node(self).url(); + let document = document_from_node(self); + let base = document.url(); UrlParser::new().base_url(&base).parse(&value).ok() }); }, diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 3d779c321ab..b16b2ec5609 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -187,7 +187,8 @@ impl HTMLFormElement { } // TODO: Resolve the url relative to the submitter element // Step 10-15 - let action_components = UrlParser::new().base_url(&base).parse(&action).unwrap_or(base); + let action_components = + UrlParser::new().base_url(base).parse(&action).unwrap_or((*base).clone()); let _action = action_components.serialize(); let scheme = action_components.scheme.clone(); let enctype = submitter.enctype(); diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index a80763d1dde..d679fb12da6 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1715,7 +1715,7 @@ impl Node { }; let window = document.window(); let loader = DocumentLoader::new(&*document.loader()); - let document = Document::new(window.r(), Some(document.url()), + let document = Document::new(window.r(), Some((*document.url()).clone()), is_html_doc, None, None, DocumentSource::NotFromParser, loader); NodeCast::from_root(document) diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index e787368ef61..a510dd544cf 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -1098,7 +1098,7 @@ impl Window { pub fn get_url(&self) -> Url { let doc = self.Document(); - doc.r().url() + (*doc.r().url()).clone() } pub fn resource_task(&self) -> ResourceTask { diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 1c3b6c2cd37..30684e0ee00 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -1909,7 +1909,7 @@ impl ScriptTask { window.r().set_fragment_name(final_url.fragment.clone()); // Notify devtools that a new script global exists. - self.notify_devtools(document.r().Title(), final_url, (id, None)); + self.notify_devtools(document.r().Title(), (*final_url).clone(), (id, None)); } } diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 79f0f502ae2..15b31ff63e7 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -182,6 +182,7 @@ pub fn handle_get_name(page: &Rc<Page>, pub fn handle_get_url(page: &Rc<Page>, _pipeline: PipelineId, reply: IpcSender<Url>) { - let url = page.document().r().url(); - reply.send(url).unwrap(); + let document = page.document(); + let url = document.r().url(); + reply.send((*url).clone()).unwrap(); } |