diff options
Diffstat (limited to 'components/net_traits')
-rw-r--r-- | components/net_traits/lib.rs | 4 | ||||
-rw-r--r-- | components/net_traits/response.rs | 31 |
2 files changed, 26 insertions, 9 deletions
diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs index e20d856a113..5ba5f61e3c7 100644 --- a/components/net_traits/lib.rs +++ b/components/net_traits/lib.rs @@ -172,8 +172,10 @@ pub trait FetchTaskTarget { #[derive(Serialize, Deserialize)] pub enum FilteredMetadata { + Basic(Metadata), + Cors(Metadata), Opaque, - Transparent(Metadata), + OpaqueRedirect } #[derive(Serialize, Deserialize)] diff --git a/components/net_traits/response.rs b/components/net_traits/response.rs index 1eff533680a..57abad46a01 100644 --- a/components/net_traits/response.rs +++ b/components/net_traits/response.rs @@ -270,17 +270,32 @@ impl Response { Some(ref url) => { let unsafe_metadata = init_metadata(response, url); - Ok(FetchMetadata::Filtered { - filtered: match metadata { - Some(m) => FilteredMetadata::Transparent(m), - None => FilteredMetadata::Opaque, - }, - unsafe_: unsafe_metadata, - }) + match self.response_type { + ResponseType::Basic => Ok(FetchMetadata::Filtered { + filtered: FilteredMetadata::Basic(metadata.unwrap()), + unsafe_: unsafe_metadata + }), + ResponseType::Cors => Ok(FetchMetadata::Filtered { + filtered: FilteredMetadata::Cors(metadata.unwrap()), + unsafe_: unsafe_metadata + }), + ResponseType::Default => unreachable!(), + ResponseType::Error(ref network_err) => + Err(network_err.clone()), + ResponseType::Opaque => Ok(FetchMetadata::Filtered { + filtered: FilteredMetadata::Opaque, + unsafe_: unsafe_metadata + }), + ResponseType::OpaqueRedirect => Ok(FetchMetadata::Filtered { + filtered: FilteredMetadata::OpaqueRedirect, + unsafe_: unsafe_metadata + }) + } }, - None => Err(NetworkError::Internal("No url found in unsafe response".to_owned())), + None => Err(NetworkError::Internal("No url found in unsafe response".to_owned())) } } else { + assert_eq!(self.response_type, ResponseType::Default); Ok(FetchMetadata::Unfiltered(metadata.unwrap())) } } |