mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
Add FetchMetadata and update corresponding methods
This commit is contained in:
parent
4dcf693a75
commit
07c9cfecec
5 changed files with 75 additions and 29 deletions
|
@ -31,7 +31,7 @@ use html5ever::tree_builder::NextParserState;
|
|||
use ipc_channel::ipc;
|
||||
use ipc_channel::router::ROUTER;
|
||||
use js::jsval::UndefinedValue;
|
||||
use net_traits::{FetchResponseListener, Metadata, NetworkError};
|
||||
use net_traits::{FetchMetadata, FetchResponseListener, Metadata, NetworkError};
|
||||
use net_traits::request::{CORSSettings, CredentialsMode, Destination, RequestInit, RequestMode, Type as RequestType};
|
||||
use network_listener::{NetworkListener, PreInvoke};
|
||||
use std::ascii::AsciiExt;
|
||||
|
@ -159,8 +159,12 @@ impl FetchResponseListener for ScriptContext {
|
|||
|
||||
fn process_request_eof(&mut self) {} // TODO(KiChjang): Perhaps add custom steps to perform fetch here?
|
||||
|
||||
fn process_response(&mut self, metadata: Result<Metadata, NetworkError>) {
|
||||
self.metadata = metadata.ok();
|
||||
fn process_response(&mut self,
|
||||
metadata: Result<FetchMetadata, NetworkError>) {
|
||||
self.metadata = metadata.ok().map(|meta| match meta {
|
||||
FetchMetadata::Unfiltered(m) => m,
|
||||
FetchMetadata::Filtered { unsafe_, .. } => unsafe_
|
||||
});
|
||||
|
||||
let status_code = self.metadata.as_ref().and_then(|m| {
|
||||
match m.status {
|
||||
|
|
|
@ -45,8 +45,8 @@ use js::jsapi::{JSContext, JS_ParseJSON};
|
|||
use js::jsapi::JS_ClearPendingException;
|
||||
use js::jsval::{JSVal, NullValue, UndefinedValue};
|
||||
use msg::constellation_msg::{PipelineId, ReferrerPolicy};
|
||||
use net_traits::{CoreResourceThread, LoadOrigin};
|
||||
use net_traits::{FetchResponseListener, Metadata, NetworkError};
|
||||
use net_traits::{CoreResourceThread, FetchMetadata, FilteredMetadata};
|
||||
use net_traits::{FetchResponseListener, LoadOrigin, NetworkError};
|
||||
use net_traits::CoreResourceMsg::Fetch;
|
||||
use net_traits::request::{CredentialsMode, Destination, RequestInit, RequestMode};
|
||||
use net_traits::trim_http_whitespace;
|
||||
|
@ -227,10 +227,10 @@ impl XMLHttpRequest {
|
|||
// todo
|
||||
}
|
||||
|
||||
fn process_response(&mut self, metadata: Result<Metadata, NetworkError>) {
|
||||
fn process_response(&mut self,
|
||||
metadata: Result<FetchMetadata, NetworkError>) {
|
||||
let xhr = self.xhr.root();
|
||||
let rv = xhr.process_headers_available(self.gen_id,
|
||||
metadata);
|
||||
let rv = xhr.process_headers_available(self.gen_id, metadata);
|
||||
if rv.is_err() {
|
||||
*self.sync_status.borrow_mut() = Some(rv);
|
||||
}
|
||||
|
@ -869,10 +869,16 @@ impl XMLHttpRequest {
|
|||
}
|
||||
|
||||
fn process_headers_available(&self,
|
||||
gen_id: GenerationId, metadata: Result<Metadata, NetworkError>)
|
||||
gen_id: GenerationId, metadata: Result<FetchMetadata, NetworkError>)
|
||||
-> Result<(), Error> {
|
||||
let metadata = match metadata {
|
||||
Ok(meta) => meta,
|
||||
Ok(meta) => match meta {
|
||||
FetchMetadata::Unfiltered(m) => m,
|
||||
FetchMetadata::Filtered { filtered, .. } => match filtered {
|
||||
FilteredMetadata::Opaque => return Err(Error::Network),
|
||||
FilteredMetadata::Transparent(m) => m
|
||||
}
|
||||
},
|
||||
Err(_) => {
|
||||
self.process_partial_response(XHRProgress::Errored(gen_id, Error::Network));
|
||||
return Err(Error::Network);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue