diff options
Diffstat (limited to 'components/script/dom/response.rs')
-rw-r--r-- | components/script/dom/response.rs | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs index ef183340a97..11f51b75414 100644 --- a/components/script/dom/response.rs +++ b/components/script/dom/response.rs @@ -37,7 +37,6 @@ use url::Position; pub struct Response { reflector_: Reflector, headers_reflector: MutNullableDom<Headers>, - mime_type: DomRefCell<Vec<u8>>, /// `None` can be considered a StatusCode of `0`. #[ignore_malloc_size_of = "Defined in hyper"] status: DomRefCell<Option<StatusCode>>, @@ -62,7 +61,6 @@ impl Response { Response { reflector_: Reflector::new(), headers_reflector: Default::default(), - mime_type: DomRefCell::new("".to_string().into_bytes()), status: DomRefCell::new(Some(StatusCode::OK)), raw_status: DomRefCell::new(Some((200, b"".to_vec()))), response_type: DomRefCell::new(DOMResponseType::Default), @@ -79,6 +77,7 @@ impl Response { reflect_dom_object(Box::new(Response::new_inherited(global)), global) } + // https://fetch.spec.whatwg.org/#initialize-a-response pub fn Constructor( global: &GlobalScope, body: Option<BodyInit>, @@ -100,34 +99,29 @@ impl Response { )); } - // Step 3 let r = Response::new(global); - // Step 4 + // Step 3 *r.status.borrow_mut() = Some(StatusCode::from_u16(init.status).unwrap()); - // Step 5 + // Step 4 *r.raw_status.borrow_mut() = Some((init.status, init.statusText.clone().into())); - // Step 6 + // Step 5 if let Some(ref headers_member) = init.headers { - // Step 6.1 - r.Headers().empty_header_list(); - - // Step 6.2 r.Headers().fill(Some(headers_member.clone()))?; } - // Step 7 + // Step 6 if let Some(ref body) = body { - // Step 7.1 + // Step 6.1 if is_null_body_status(init.status) { return Err(Error::Type( "Body is non-null but init's status member is a null body status".to_string(), )); }; - // Step 7.3 + // Step 6.2 let ExtractedBody { stream, total_bytes: _, @@ -137,7 +131,7 @@ impl Response { r.body_stream.set(Some(&*stream)); - // Step 7.4 + // Step 6.3 if let Some(content_type_contents) = content_type { if !r .Headers() @@ -152,16 +146,6 @@ impl Response { }; } - // Step 8 - *r.mime_type.borrow_mut() = r.Headers().extract_mime_type(); - - // Step 9 - // TODO: `entry settings object` is not implemented in Servo yet. - - // Step 10 - // TODO: Write this step once Promises are merged in - - // Step 11 Ok(r) } @@ -242,7 +226,8 @@ impl BodyMixin for Response { } fn get_mime_type(&self) -> Vec<u8> { - self.mime_type.borrow().clone() + let headers = self.Headers(); + headers.extract_mime_type() } } @@ -404,7 +389,6 @@ impl Response { Some(hyper_headers) => hyper_headers.into_inner(), None => HyperHeaders::new(), }); - *self.mime_type.borrow_mut() = self.Headers().extract_mime_type(); } pub fn set_raw_status(&self, status: Option<(u16, Vec<u8>)>) { |