diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/response.rs | 28 | ||||
-rw-r--r-- | components/script/fetch.rs | 18 |
2 files changed, 38 insertions, 8 deletions
diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs index ec139bf4a9e..d618c9823e4 100644 --- a/components/script/dom/response.rs +++ b/components/script/dom/response.rs @@ -395,6 +395,7 @@ fn serialize_without_fragment(url: &ServoUrl) -> &str { impl Response { pub fn set_type(&self, new_response_type: DOMResponseType) { *self.response_type.borrow_mut() = new_response_type; + self.set_response_members_by_type(new_response_type); } pub fn set_headers(&self, option_hyper_headers: Option<Serde<HyperHeaders>>) { @@ -412,6 +413,33 @@ impl Response { *self.url.borrow_mut() = Some(final_url); } + fn set_response_members_by_type(&self, response_type: DOMResponseType) { + match response_type { + DOMResponseType::Error => { + *self.status.borrow_mut() = None; + self.set_raw_status(None); + self.set_headers(None); + *self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]); + }, + DOMResponseType::Opaque => { + *self.url_list.borrow_mut() = vec![]; + *self.status.borrow_mut() = None; + self.set_raw_status(None); + self.set_headers(None); + *self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]); + }, + DOMResponseType::Opaqueredirect => { + *self.status.borrow_mut() = None; + self.set_raw_status(None); + self.set_headers(None); + *self.body.borrow_mut() = NetTraitsResponseBody::Done(vec![]); + }, + DOMResponseType::Default => {}, + DOMResponseType::Basic => {}, + DOMResponseType::Cors => {}, + } + } + #[allow(unrooted_must_root)] pub fn finish(&self, body: Vec<u8>) { *self.body.borrow_mut() = NetTraitsResponseBody::Done(body); diff --git a/components/script/fetch.rs b/components/script/fetch.rs index 8c31f24f260..045e9b93eda 100644 --- a/components/script/fetch.rs +++ b/components/script/fetch.rs @@ -239,14 +239,16 @@ impl FetchResponseListener for FetchContext { fill_headers_with_metadata(self.response_object.root(), m); self.response_object.root().set_type(DOMResponseType::Cors); }, - FilteredMetadata::Opaque => self - .response_object - .root() - .set_type(DOMResponseType::Opaque), - FilteredMetadata::OpaqueRedirect => self - .response_object - .root() - .set_type(DOMResponseType::Opaqueredirect), + FilteredMetadata::Opaque => { + self.response_object + .root() + .set_type(DOMResponseType::Opaque); + }, + FilteredMetadata::OpaqueRedirect => { + self.response_object + .root() + .set_type(DOMResponseType::Opaqueredirect); + }, }, }, } |