aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorShing Lyu <shing.lyu@gmail.com>2016-02-03 15:06:13 +0800
committerShing Lyu <shing.lyu@gmail.com>2016-03-22 13:56:31 +0800
commitf55b0765d17c06bccd7bf411563e3a404de0a56a (patch)
tree75db1d8e4a5a2f1b04561acb5495f4fe37ee3496 /components/script/dom
parentaa35d7721b0e1e7893e48af1eb91bf8ad2495d46 (diff)
downloadservo-f55b0765d17c06bccd7bf411563e3a404de0a56a.tar.gz
servo-f55b0765d17c06bccd7bf411563e3a404de0a56a.zip
Bug 8830 - Implemented XMLHttpRequest.responseURL
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/xmlhttprequest.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 65ccb435dbf..8d1456a73ae 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -118,7 +118,7 @@ pub struct XMLHttpRequest {
timeout: Cell<u32>,
with_credentials: Cell<bool>,
upload: JS<XMLHttpRequestUpload>,
- response_url: String,
+ response_url: DOMRefCell<String>,
status: Cell<u16>,
status_text: DOMRefCell<ByteString>,
response: DOMRefCell<ByteString>,
@@ -160,7 +160,7 @@ impl XMLHttpRequest {
timeout: Cell::new(0u32),
with_credentials: Cell::new(false),
upload: JS::from_rooted(&XMLHttpRequestUpload::new(global)),
- response_url: String::from(""),
+ response_url: DOMRefCell::new(String::from("")),
status: Cell::new(0),
status_text: DOMRefCell::new(ByteString::new(vec!())),
response: DOMRefCell::new(ByteString::new(vec!())),
@@ -691,7 +691,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
// https://xhr.spec.whatwg.org/#the-responseurl-attribute
fn ResponseURL(&self) -> USVString {
- USVString(self.response_url.clone())
+ USVString(self.response_url.borrow().clone())
}
// https://xhr.spec.whatwg.org/#the-status-attribute
@@ -876,6 +876,8 @@ impl XMLHttpRequest {
}
}
+ *self.response_url.borrow_mut() = metadata.final_url.serialize_no_fragment();
+
// XXXManishearth Clear cache entries in case of a network error
self.process_partial_response(XHRProgress::HeadersReceived(gen_id,
metadata.headers,
@@ -980,6 +982,7 @@ impl XMLHttpRequest {
// Subsubsteps 5-7
self.send_flag.set(false);
+
self.change_ready_state(XMLHttpRequestState::Done);
return_if_fetch_was_terminated!();
// Subsubsteps 10-12