mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Respect MIME type from headers instead of caching it
This commit is contained in:
parent
d37865e3eb
commit
445c90e5c5
3 changed files with 4 additions and 51 deletions
|
@ -50,7 +50,6 @@ pub struct Request {
|
||||||
request: DomRefCell<NetTraitsRequest>,
|
request: DomRefCell<NetTraitsRequest>,
|
||||||
body_stream: MutNullableDom<ReadableStream>,
|
body_stream: MutNullableDom<ReadableStream>,
|
||||||
headers: MutNullableDom<Headers>,
|
headers: MutNullableDom<Headers>,
|
||||||
mime_type: DomRefCell<Vec<u8>>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Request {
|
impl Request {
|
||||||
|
@ -60,7 +59,6 @@ impl Request {
|
||||||
request: DomRefCell::new(net_request_from_global(global, url)),
|
request: DomRefCell::new(net_request_from_global(global, url)),
|
||||||
body_stream: MutNullableDom::new(None),
|
body_stream: MutNullableDom::new(None),
|
||||||
headers: Default::default(),
|
headers: Default::default(),
|
||||||
mime_type: DomRefCell::new("".to_string().into_bytes()),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,8 +442,6 @@ impl Request {
|
||||||
r.request.borrow_mut().body = input_body;
|
r.request.borrow_mut().body = input_body;
|
||||||
|
|
||||||
// Step 41
|
// Step 41
|
||||||
let extracted_mime_type = r.Headers().extract_mime_type();
|
|
||||||
*r.mime_type.borrow_mut() = extracted_mime_type;
|
|
||||||
|
|
||||||
// Step 42
|
// Step 42
|
||||||
Ok(r)
|
Ok(r)
|
||||||
|
@ -462,7 +458,6 @@ impl Request {
|
||||||
fn clone_from(r: &Request) -> Fallible<DomRoot<Request>> {
|
fn clone_from(r: &Request) -> Fallible<DomRoot<Request>> {
|
||||||
let req = r.request.borrow();
|
let req = r.request.borrow();
|
||||||
let url = req.url();
|
let url = req.url();
|
||||||
let mime_type = r.mime_type.borrow().clone();
|
|
||||||
let headers_guard = r.Headers().get_guard();
|
let headers_guard = r.Headers().get_guard();
|
||||||
let r_clone = Request::new(&r.global(), url);
|
let r_clone = Request::new(&r.global(), url);
|
||||||
r_clone.request.borrow_mut().pipeline_id = req.pipeline_id;
|
r_clone.request.borrow_mut().pipeline_id = req.pipeline_id;
|
||||||
|
@ -471,7 +466,6 @@ impl Request {
|
||||||
borrowed_r_request.origin = req.origin.clone();
|
borrowed_r_request.origin = req.origin.clone();
|
||||||
}
|
}
|
||||||
*r_clone.request.borrow_mut() = req.clone();
|
*r_clone.request.borrow_mut() = req.clone();
|
||||||
*r_clone.mime_type.borrow_mut() = mime_type;
|
|
||||||
r_clone.Headers().copy_from_headers(r.Headers())?;
|
r_clone.Headers().copy_from_headers(r.Headers())?;
|
||||||
r_clone.Headers().set_guard(headers_guard);
|
r_clone.Headers().set_guard(headers_guard);
|
||||||
Ok(r_clone)
|
Ok(r_clone)
|
||||||
|
@ -682,7 +676,8 @@ impl BodyMixin for Request {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_mime_type(&self) -> Vec<u8> {
|
fn get_mime_type(&self) -> Vec<u8> {
|
||||||
self.mime_type.borrow().clone()
|
let headers = self.Headers();
|
||||||
|
headers.extract_mime_type()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ use url::Position;
|
||||||
pub struct Response {
|
pub struct Response {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
headers_reflector: MutNullableDom<Headers>,
|
headers_reflector: MutNullableDom<Headers>,
|
||||||
mime_type: DomRefCell<Vec<u8>>,
|
|
||||||
/// `None` can be considered a StatusCode of `0`.
|
/// `None` can be considered a StatusCode of `0`.
|
||||||
#[ignore_malloc_size_of = "Defined in hyper"]
|
#[ignore_malloc_size_of = "Defined in hyper"]
|
||||||
status: DomRefCell<Option<StatusCode>>,
|
status: DomRefCell<Option<StatusCode>>,
|
||||||
|
@ -62,7 +61,6 @@ impl Response {
|
||||||
Response {
|
Response {
|
||||||
reflector_: Reflector::new(),
|
reflector_: Reflector::new(),
|
||||||
headers_reflector: Default::default(),
|
headers_reflector: Default::default(),
|
||||||
mime_type: DomRefCell::new("".to_string().into_bytes()),
|
|
||||||
status: DomRefCell::new(Some(StatusCode::OK)),
|
status: DomRefCell::new(Some(StatusCode::OK)),
|
||||||
raw_status: DomRefCell::new(Some((200, b"".to_vec()))),
|
raw_status: DomRefCell::new(Some((200, b"".to_vec()))),
|
||||||
response_type: DomRefCell::new(DOMResponseType::Default),
|
response_type: DomRefCell::new(DOMResponseType::Default),
|
||||||
|
@ -153,7 +151,6 @@ impl Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 8
|
// Step 8
|
||||||
*r.mime_type.borrow_mut() = r.Headers().extract_mime_type();
|
|
||||||
|
|
||||||
// Step 9
|
// Step 9
|
||||||
// TODO: `entry settings object` is not implemented in Servo yet.
|
// TODO: `entry settings object` is not implemented in Servo yet.
|
||||||
|
@ -242,7 +239,8 @@ impl BodyMixin for Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_mime_type(&self) -> Vec<u8> {
|
fn get_mime_type(&self) -> Vec<u8> {
|
||||||
self.mime_type.borrow().clone()
|
let headers = self.Headers();
|
||||||
|
headers.extract_mime_type()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,7 +402,6 @@ impl Response {
|
||||||
Some(hyper_headers) => hyper_headers.into_inner(),
|
Some(hyper_headers) => hyper_headers.into_inner(),
|
||||||
None => HyperHeaders::new(),
|
None => HyperHeaders::new(),
|
||||||
});
|
});
|
||||||
*self.mime_type.borrow_mut() = self.Headers().extract_mime_type();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_raw_status(&self, status: Option<(u16, Vec<u8>)>) {
|
pub fn set_raw_status(&self, status: Option<(u16, Vec<u8>)>) {
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
[mime-type.any.html]
|
|
||||||
[Request: overriding explicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: setting missing Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: overriding explicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Request: setting missing Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: removing implicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Request: removing implicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[mime-type.any.worker.html]
|
|
||||||
[Request: overriding explicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: setting missing Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: overriding explicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Request: setting missing Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Response: removing implicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Request: removing implicit Content-Type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue