diff options
author | Simon Wülker <simon.wuelker@arcor.de> | 2024-10-16 06:15:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-16 04:15:56 +0000 |
commit | ed959d7a1a2a584803f689ce8d92f7d0c3c0d48b (patch) | |
tree | 33b848b207e38b89e06e73d80b0782caefcb8dcc /components/net/tests | |
parent | a2f81d69c1971f07c2af8633756953ddd70a1bb5 (diff) | |
download | servo-ed959d7a1a2a584803f689ce8d92f7d0c3c0d48b.tar.gz servo-ed959d7a1a2a584803f689ce8d92f7d0c3c0d48b.zip |
Implement fetch metadata headers (#33830)
* Implement sec-fetch-dest header
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Implement "is same site" algorithm
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Implement remaining sec-fetch-* headers
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix casing of header names
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix handling Destination::None in sec-fetch-dest
This also removes the comment about wanting to upgrade
to a newer content-security-protocol version because
the csp doesn't implement the "empty" case.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Remove colon from spec comment
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Adjust expected default headers
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix test expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Diffstat (limited to 'components/net/tests')
-rw-r--r-- | components/net/tests/fetch.rs | 14 | ||||
-rw-r--r-- | components/net/tests/http_loader.rs | 40 |
2 files changed, 52 insertions, 2 deletions
diff --git a/components/net/tests/fetch.rs b/components/net/tests/fetch.rs index 03d2826fc01..bc0d19a5b9a 100644 --- a/components/net/tests/fetch.rs +++ b/components/net/tests/fetch.rs @@ -1368,6 +1368,20 @@ fn test_fetch_with_devtools() { HeaderValue::from_static("gzip, deflate, br"), ); + // Append fetch metadata headers + headers.insert( + HeaderName::from_static("sec-fetch-dest"), + HeaderValue::from_static("empty"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-mode"), + HeaderValue::from_static("no-cors"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-site"), + HeaderValue::from_static("same-origin"), + ); + let httprequest = DevtoolsHttpRequest { url: url, method: Method::GET, diff --git a/components/net/tests/http_loader.rs b/components/net/tests/http_loader.rs index 11b31c87606..fac0101baba 100644 --- a/components/net/tests/http_loader.rs +++ b/components/net/tests/http_loader.rs @@ -26,7 +26,7 @@ use headers::{ }; use http::header::{self, HeaderMap, HeaderValue}; use http::uri::Authority; -use http::{Method, StatusCode}; +use http::{HeaderName, Method, StatusCode}; use hyper::{Body, Request as HyperRequest, Response as HyperResponse}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; @@ -149,6 +149,24 @@ fn test_check_default_headers_loaded_in_every_request() { headers.typed_insert::<UserAgent>(crate::DEFAULT_USER_AGENT.parse().unwrap()); + // Append fetch metadata headers + headers.insert( + HeaderName::from_static("sec-fetch-dest"), + HeaderValue::from_static("document"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-mode"), + HeaderValue::from_static("no-cors"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-site"), + HeaderValue::from_static("same-origin"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-user"), + HeaderValue::from_static("?1"), + ); + *expected_headers.lock().unwrap() = Some(headers.clone()); // Testing for method.GET @@ -159,7 +177,7 @@ fn test_check_default_headers_loaded_in_every_request() { .pipeline_id(Some(TEST_PIPELINE_ID)) .build(); - let response = fetch(&mut request, None); + let response = dbg!(fetch(&mut request, None)); assert!(response .internal_response .unwrap() @@ -282,6 +300,24 @@ fn test_request_and_response_data_with_network_messages() { HeaderValue::from_static("gzip, deflate, br"), ); + // Append fetch metadata headers + headers.insert( + HeaderName::from_static("sec-fetch-dest"), + HeaderValue::from_static("document"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-mode"), + HeaderValue::from_static("no-cors"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-site"), + HeaderValue::from_static("same-site"), + ); + headers.insert( + HeaderName::from_static("sec-fetch-user"), + HeaderValue::from_static("?1"), + ); + let httprequest = DevtoolsHttpRequest { url: url, method: Method::GET, |