aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastien Orivel <eijebong@bananium.fr>2020-05-06 20:08:26 +0200
committerBastien Orivel <eijebong@bananium.fr>2020-05-06 20:08:26 +0200
commitec665d9dcee6061b0253b2b38dccda06400cdce1 (patch)
tree67085e74d8520f9408b6638c632c416863ca25d9
parentb290ad95c159aeefa6e3fca91876e2a5fc584584 (diff)
downloadservo-ec665d9dcee6061b0253b2b38dccda06400cdce1.tar.gz
servo-ec665d9dcee6061b0253b2b38dccda06400cdce1.zip
Properly set the url on the Response object when the response is an opaqueredirect
-rw-r--r--components/net/image_cache.rs2
-rw-r--r--components/net_traits/lib.rs2
-rw-r--r--components/net_traits/response.rs2
-rw-r--r--components/script/dom/eventsource.rs2
-rw-r--r--components/script/dom/xmlhttprequest.rs2
-rw-r--r--components/script/fetch.rs8
-rw-r--r--components/script/stylesheet_loader.rs2
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini90
8 files changed, 10 insertions, 100 deletions
diff --git a/components/net/image_cache.rs b/components/net/image_cache.rs
index 95379770883..d32061da06a 100644
--- a/components/net/image_cache.rs
+++ b/components/net/image_cache.rs
@@ -592,7 +592,7 @@ impl ImageCache for ImageCacheImpl {
FilteredMetadata::Basic(_) | FilteredMetadata::Cors(_) => {
CorsStatus::Safe
},
- FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => {
+ FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
CorsStatus::Unsafe
},
},
diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs
index a7100e0ef44..7d0badb20b8 100644
--- a/components/net_traits/lib.rs
+++ b/components/net_traits/lib.rs
@@ -186,7 +186,7 @@ pub enum FilteredMetadata {
Basic(Metadata),
Cors(Metadata),
Opaque,
- OpaqueRedirect,
+ OpaqueRedirect(ServoUrl),
}
#[derive(Clone, Debug, Deserialize, Serialize)]
diff --git a/components/net_traits/response.rs b/components/net_traits/response.rs
index f509801678f..b2342a332b4 100644
--- a/components/net_traits/response.rs
+++ b/components/net_traits/response.rs
@@ -341,7 +341,7 @@ impl Response {
unsafe_: unsafe_metadata,
}),
ResponseType::OpaqueRedirect => Ok(FetchMetadata::Filtered {
- filtered: FilteredMetadata::OpaqueRedirect,
+ filtered: FilteredMetadata::OpaqueRedirect(url.clone()),
unsafe_: unsafe_metadata,
}),
}
diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 101eb851cfb..4ab9d11f906 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -340,7 +340,7 @@ impl FetchResponseListener for EventSourceContext {
let meta = match fm {
FetchMetadata::Unfiltered(m) => m,
FetchMetadata::Filtered { unsafe_, filtered } => match filtered {
- FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => {
+ FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
return self.fail_the_connection()
},
_ => unsafe_,
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 5ab370feca8..336d7a89f22 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -984,7 +984,7 @@ impl XMLHttpRequest {
FilteredMetadata::Basic(m) => m,
FilteredMetadata::Cors(m) => m,
FilteredMetadata::Opaque => return Err(Error::Network),
- FilteredMetadata::OpaqueRedirect => return Err(Error::Network),
+ FilteredMetadata::OpaqueRedirect(_) => return Err(Error::Network),
},
},
Err(_) => {
diff --git a/components/script/fetch.rs b/components/script/fetch.rs
index fe0792d857f..a1ba638a8d5 100644
--- a/components/script/fetch.rs
+++ b/components/script/fetch.rs
@@ -246,10 +246,10 @@ impl FetchResponseListener for FetchContext {
.root()
.set_type(DOMResponseType::Opaque);
},
- FilteredMetadata::OpaqueRedirect => {
- self.response_object
- .root()
- .set_type(DOMResponseType::Opaqueredirect);
+ FilteredMetadata::OpaqueRedirect(url) => {
+ let r = self.response_object.root();
+ r.set_type(DOMResponseType::Opaqueredirect);
+ r.set_final_url(url);
},
},
},
diff --git a/components/script/stylesheet_loader.rs b/components/script/stylesheet_loader.rs
index 8e3f3624fb1..b0c52d5fc8c 100644
--- a/components/script/stylesheet_loader.rs
+++ b/components/script/stylesheet_loader.rs
@@ -101,7 +101,7 @@ impl FetchResponseListener for StylesheetContext {
fn process_response(&mut self, metadata: Result<FetchMetadata, NetworkError>) {
if let Ok(FetchMetadata::Filtered { ref filtered, .. }) = metadata {
match *filtered {
- FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => {
+ FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
self.origin_clean = false;
},
_ => {},
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
index b6eadc3b5cd..0d553db3737 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
@@ -1,123 +1,33 @@
[redirect-mode.any.worker.html]
- [same-origin redirect 301 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 301 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 302 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 302 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 303 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 303 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 307 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 307 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 308 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 308 in manual redirect and no-cors mode]
- expected: FAIL
-
- [cross-origin redirect 301 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 301 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 302 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 302 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 303 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 303 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 307 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 307 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 308 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 308 in manual redirect and no-cors mode]
expected: FAIL
[redirect-mode.any.html]
- [same-origin redirect 301 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 301 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 302 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 302 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 303 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 303 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 307 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 307 in manual redirect and no-cors mode]
- expected: FAIL
-
- [same-origin redirect 308 in manual redirect and cors mode]
- expected: FAIL
-
- [same-origin redirect 308 in manual redirect and no-cors mode]
- expected: FAIL
-
- [cross-origin redirect 301 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 301 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 302 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 302 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 303 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 303 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 307 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 307 in manual redirect and no-cors mode]
expected: FAIL
- [cross-origin redirect 308 in manual redirect and cors mode]
- expected: FAIL
-
[cross-origin redirect 308 in manual redirect and no-cors mode]
expected: FAIL