aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2015-07-28 19:08:35 -0700
committerPatrick Walton <pcwalton@mimiga.net>2015-09-24 18:54:53 -0700
commit5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8 (patch)
treefe5a211ae050f2a5aa79e8d606ffcf46d557c792 /components
parent4d1be2f56cd7a37c4c803ba12733fca55b57d4de (diff)
downloadservo-5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8.tar.gz
servo-5dce5f0c970124610e0a6e4db0f44bdb5ca7cdd8.zip
script: Stop copying the document URL.
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/document.rs15
-rw-r--r--components/script/dom/htmlbaseelement.rs3
-rw-r--r--components/script/dom/htmlbodyelement.rs3
-rw-r--r--components/script/dom/htmlformelement.rs3
-rw-r--r--components/script/dom/node.rs2
-rw-r--r--components/script/dom/window.rs2
-rw-r--r--components/script/script_task.rs2
-rw-r--r--components/script/webdriver_handlers.rs5
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();
}