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.rs36
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>)>) {