aboutsummaryrefslogtreecommitdiffstats
path: root/components/net_traits
diff options
context:
space:
mode:
Diffstat (limited to 'components/net_traits')
-rw-r--r--components/net_traits/lib.rs4
-rw-r--r--components/net_traits/response.rs31
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()))
}
}