diff options
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 25 |
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(()) } |