aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/response.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/response.rs')
-rw-r--r--components/script/dom/response.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs
index 7dfa24439fc..dc80cc74c2e 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);