aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xmlhttprequest.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r--components/script/dom/xmlhttprequest.rs25
1 files changed, 16 insertions, 9 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 9ec68cb0fd2..7cb33d1b023 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -46,7 +46,8 @@ use js::jsval::{JSVal, NullValue, UndefinedValue};
use net_traits::ControlMsg::Load;
use net_traits::{ResourceTask, ResourceCORSData, LoadData, LoadConsumer};
-use net_traits::{AsyncResponseListener, Metadata};
+use net_traits::{AsyncResponseListener, Metadata, SerializableHeaders, SerializableMethod};
+use net_traits::{SerializableUrl};
use cors::{allow_cross_origin_request, CORSRequest, RequestMode, AsyncCORSResponseListener};
use cors::CORSResponse;
use util::str::DOMString;
@@ -216,7 +217,7 @@ impl XMLHttpRequest {
let mut load_data = self.load_data.borrow_mut().take().unwrap();
load_data.cors = Some(ResourceCORSData {
preflight: self.req.preflight_flag,
- origin: self.req.origin.clone()
+ origin: SerializableUrl(self.req.origin.clone())
});
XMLHttpRequest::initiate_async_xhr(self.xhr.clone(), self.script_chan.clone(),
@@ -539,14 +540,15 @@ impl<'a> XMLHttpRequestMethods for &'a XMLHttpRequest {
None => ()
}
- load_data.preserved_headers = (*self.request_headers.borrow()).clone();
+ load_data.preserved_headers =
+ SerializableHeaders((*self.request_headers.borrow()).clone());
if !load_data.preserved_headers.has::<Accept>() {
let mime = Mime(mime::TopLevel::Star, mime::SubLevel::Star, vec![]);
load_data.preserved_headers.set(Accept(vec![qitem(mime)]));
}
- load_data.method = (*self.request_method.borrow()).clone();
+ load_data.method = SerializableMethod((*self.request_method.borrow()).clone());
// CORS stuff
let global = self.global.root();
@@ -556,10 +558,13 @@ impl<'a> XMLHttpRequestMethods for &'a XMLHttpRequest {
} else {
RequestMode::CORS
};
- let mut combined_headers = load_data.headers.clone();
+ let mut combined_headers = (*load_data.headers).clone();
combined_headers.extend(load_data.preserved_headers.iter());
- let cors_request = CORSRequest::maybe_new(referer_url.clone(), load_data.url.clone(), mode,
- load_data.method.clone(), combined_headers);
+ let cors_request = CORSRequest::maybe_new(referer_url.clone(),
+ (*load_data.url).clone(),
+ mode,
+ (*load_data.method).clone(),
+ combined_headers);
match cors_request {
Ok(None) => {
let mut buf = String::new();
@@ -780,8 +785,10 @@ impl<'a> PrivateXMLHttpRequestHelpers for &'a XMLHttpRequest {
_ => {}
};
// XXXManishearth Clear cache entries in case of a network error
- self.process_partial_response(XHRProgress::HeadersReceived(gen_id,
- metadata.headers, metadata.status));
+ self.process_partial_response(XHRProgress::HeadersReceived(
+ gen_id,
+ metadata.headers.map(|headers| headers.0),
+ metadata.status.map(|status| status.0)));
Ok(())
}