aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcybai <cyb.ai.815@gmail.com>2023-04-13 00:31:49 +0900
committercybai <cyb.ai.815@gmail.com>2023-04-13 00:31:49 +0900
commit445c90e5c5bf4fb03e259964195266a4995d6d8f (patch)
treec2368ce8c819d7202237c7f2db0ce3cf0498db34
parentd37865e3ebbea7ccf1e21dfab49f4f9401e3bb4e (diff)
downloadservo-445c90e5c5bf4fb03e259964195266a4995d6d8f.tar.gz
servo-445c90e5c5bf4fb03e259964195266a4995d6d8f.zip
Respect MIME type from headers instead of caching it
-rw-r--r--components/script/dom/request.rs9
-rw-r--r--components/script/dom/response.rs7
-rw-r--r--tests/wpt/metadata/fetch/api/body/mime-type.any.js.ini39
3 files changed, 4 insertions, 51 deletions
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs
index e301d360cc4..4fb8b192909 100644
--- a/components/script/dom/request.rs
+++ b/components/script/dom/request.rs
@@ -50,7 +50,6 @@ pub struct Request {
request: DomRefCell<NetTraitsRequest>,
body_stream: MutNullableDom<ReadableStream>,
headers: MutNullableDom<Headers>,
- mime_type: DomRefCell<Vec<u8>>,
}
impl Request {
@@ -60,7 +59,6 @@ impl Request {
request: DomRefCell::new(net_request_from_global(global, url)),
body_stream: MutNullableDom::new(None),
headers: Default::default(),
- mime_type: DomRefCell::new("".to_string().into_bytes()),
}
}
@@ -444,8 +442,6 @@ impl Request {
r.request.borrow_mut().body = input_body;
// Step 41
- let extracted_mime_type = r.Headers().extract_mime_type();
- *r.mime_type.borrow_mut() = extracted_mime_type;
// Step 42
Ok(r)
@@ -462,7 +458,6 @@ impl Request {
fn clone_from(r: &Request) -> Fallible<DomRoot<Request>> {
let req = r.request.borrow();
let url = req.url();
- let mime_type = r.mime_type.borrow().clone();
let headers_guard = r.Headers().get_guard();
let r_clone = Request::new(&r.global(), url);
r_clone.request.borrow_mut().pipeline_id = req.pipeline_id;
@@ -471,7 +466,6 @@ impl Request {
borrowed_r_request.origin = req.origin.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().set_guard(headers_guard);
Ok(r_clone)
@@ -682,7 +676,8 @@ impl BodyMixin for Request {
}
fn get_mime_type(&self) -> Vec<u8> {
- self.mime_type.borrow().clone()
+ let headers = self.Headers();
+ headers.extract_mime_type()
}
}
diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs
index ef183340a97..01a4429986e 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),
@@ -153,7 +151,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.
@@ -242,7 +239,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 +402,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>)>) {
diff --git a/tests/wpt/metadata/fetch/api/body/mime-type.any.js.ini b/tests/wpt/metadata/fetch/api/body/mime-type.any.js.ini
deleted file mode 100644
index 9df4327e18f..00000000000
--- a/tests/wpt/metadata/fetch/api/body/mime-type.any.js.ini
+++ /dev/null
@@ -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
-