Properly set the url on the Response object when the response is an opaqueredirect

This commit is contained in:
Bastien Orivel 2020-05-06 20:08:26 +02:00
parent b290ad95c1
commit ec665d9dce
8 changed files with 10 additions and 100 deletions

View file

@ -592,7 +592,7 @@ impl ImageCache for ImageCacheImpl {
FilteredMetadata::Basic(_) | FilteredMetadata::Cors(_) => { FilteredMetadata::Basic(_) | FilteredMetadata::Cors(_) => {
CorsStatus::Safe CorsStatus::Safe
}, },
FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => { FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
CorsStatus::Unsafe CorsStatus::Unsafe
}, },
}, },

View file

@ -186,7 +186,7 @@ pub enum FilteredMetadata {
Basic(Metadata), Basic(Metadata),
Cors(Metadata), Cors(Metadata),
Opaque, Opaque,
OpaqueRedirect, OpaqueRedirect(ServoUrl),
} }
#[derive(Clone, Debug, Deserialize, Serialize)] #[derive(Clone, Debug, Deserialize, Serialize)]

View file

@ -341,7 +341,7 @@ impl Response {
unsafe_: unsafe_metadata, unsafe_: unsafe_metadata,
}), }),
ResponseType::OpaqueRedirect => Ok(FetchMetadata::Filtered { ResponseType::OpaqueRedirect => Ok(FetchMetadata::Filtered {
filtered: FilteredMetadata::OpaqueRedirect, filtered: FilteredMetadata::OpaqueRedirect(url.clone()),
unsafe_: unsafe_metadata, unsafe_: unsafe_metadata,
}), }),
} }

View file

@ -340,7 +340,7 @@ impl FetchResponseListener for EventSourceContext {
let meta = match fm { let meta = match fm {
FetchMetadata::Unfiltered(m) => m, FetchMetadata::Unfiltered(m) => m,
FetchMetadata::Filtered { unsafe_, filtered } => match filtered { FetchMetadata::Filtered { unsafe_, filtered } => match filtered {
FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => { FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
return self.fail_the_connection() return self.fail_the_connection()
}, },
_ => unsafe_, _ => unsafe_,

View file

@ -984,7 +984,7 @@ impl XMLHttpRequest {
FilteredMetadata::Basic(m) => m, FilteredMetadata::Basic(m) => m,
FilteredMetadata::Cors(m) => m, FilteredMetadata::Cors(m) => m,
FilteredMetadata::Opaque => return Err(Error::Network), FilteredMetadata::Opaque => return Err(Error::Network),
FilteredMetadata::OpaqueRedirect => return Err(Error::Network), FilteredMetadata::OpaqueRedirect(_) => return Err(Error::Network),
}, },
}, },
Err(_) => { Err(_) => {

View file

@ -246,10 +246,10 @@ impl FetchResponseListener for FetchContext {
.root() .root()
.set_type(DOMResponseType::Opaque); .set_type(DOMResponseType::Opaque);
}, },
FilteredMetadata::OpaqueRedirect => { FilteredMetadata::OpaqueRedirect(url) => {
self.response_object let r = self.response_object.root();
.root() r.set_type(DOMResponseType::Opaqueredirect);
.set_type(DOMResponseType::Opaqueredirect); r.set_final_url(url);
}, },
}, },
}, },

View file

@ -101,7 +101,7 @@ impl FetchResponseListener for StylesheetContext {
fn process_response(&mut self, metadata: Result<FetchMetadata, NetworkError>) { fn process_response(&mut self, metadata: Result<FetchMetadata, NetworkError>) {
if let Ok(FetchMetadata::Filtered { ref filtered, .. }) = metadata { if let Ok(FetchMetadata::Filtered { ref filtered, .. }) = metadata {
match *filtered { match *filtered {
FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect => { FilteredMetadata::Opaque | FilteredMetadata::OpaqueRedirect(_) => {
self.origin_clean = false; self.origin_clean = false;
}, },
_ => {}, _ => {},

View file

@ -1,123 +1,33 @@
[redirect-mode.any.worker.html] [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] [cross-origin redirect 301 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 302 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 303 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 307 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 308 in manual redirect and no-cors mode]
expected: FAIL expected: FAIL
[redirect-mode.any.html] [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] [cross-origin redirect 301 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 302 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 303 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 307 in manual redirect and no-cors mode]
expected: FAIL 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] [cross-origin redirect 308 in manual redirect and no-cors mode]
expected: FAIL expected: FAIL