diff options
-rw-r--r-- | components/script/dom/servoparser/mod.rs | 22 | ||||
-rw-r--r-- | components/script/script_thread.rs | 33 |
2 files changed, 32 insertions, 23 deletions
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index cb8fc3d753d..8c57dffa8e1 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -28,7 +28,7 @@ use hyper::mime::{Mime, SubLevel, TopLevel}; use hyper_serde::Serde; use js::jsapi::JSTracer; use msg::constellation_msg::PipelineId; -use net_traits::{AsyncResponseListener, Metadata, NetworkError}; +use net_traits::{FetchMetadata, FetchResponseListener, Metadata, NetworkError}; use network_listener::PreInvoke; use profile_traits::time::{TimerMetadata, TimerMetadataFrameType}; use profile_traits::time::{TimerMetadataReflowType, ProfilerCategory, profile}; @@ -332,11 +332,21 @@ impl ParserContext { } } -impl AsyncResponseListener for ParserContext { - fn headers_available(&mut self, meta_result: Result<Metadata, NetworkError>) { +impl FetchResponseListener for ParserContext { + fn process_request_body(&mut self) {} + + fn process_request_eof(&mut self) {} + + fn process_response(&mut self, + meta_result: Result<FetchMetadata, NetworkError>) { let mut ssl_error = None; let metadata = match meta_result { - Ok(meta) => Some(meta), + Ok(meta) => { + Some(match meta { + FetchMetadata::Unfiltered(m) => m, + FetchMetadata::Filtered { unsafe_, .. } => unsafe_ + }) + }, Err(NetworkError::SslValidation(url, reason)) => { ssl_error = Some(reason); let mut meta = Metadata::default(url); @@ -408,7 +418,7 @@ impl AsyncResponseListener for ParserContext { } } - fn data_available(&mut self, payload: Vec<u8>) { + fn process_response_chunk(&mut self, payload: Vec<u8>) { if !self.is_synthesized_document { // FIXME: use Vec<u8> (html5ever #34) let data = UTF_8.decode(&payload, DecoderTrap::Replace).unwrap(); @@ -420,7 +430,7 @@ impl AsyncResponseListener for ParserContext { } } - fn response_complete(&mut self, status: Result<(), NetworkError>) { + fn process_response_eof(&mut self, status: Result<(), NetworkError>) { let parser = match self.parser.as_ref() { Some(parser) => parser.root(), None => return, diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index d98298d0cb7..ec3bc5b1b34 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -57,7 +57,7 @@ use dom::window::{ReflowReason, Window}; use dom::worker::TrustedWorkerAddress; use euclid::Rect; use euclid::point::Point2D; -use hyper::header::{ContentType, Headers, HttpDate, LastModified}; +use hyper::header::{ContentType, HttpDate, LastModified}; use hyper::header::ReferrerPolicy as ReferrerPolicyHeader; use hyper::method::Method; use hyper::mime::{Mime, SubLevel, TopLevel}; @@ -72,10 +72,10 @@ use js::rust::Runtime; use layout_wrapper::ServoLayoutNode; use mem::heap_size_of_self_and_children; use msg::constellation_msg::{FrameType, PipelineId, PipelineNamespace, ReferrerPolicy}; -use net_traits::{AsyncResponseTarget, CoreResourceMsg, LoadConsumer, LoadContext, Metadata, ResourceThreads}; -use net_traits::{IpcSend, LoadData as NetLoadData}; +use net_traits::{CoreResourceMsg, IpcSend, Metadata, ResourceThreads}; use net_traits::bluetooth_thread::BluetoothMethodMsg; use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheResult, ImageCacheThread}; +use net_traits::request::{CredentialsMode, Destination, RequestInit}; use network_listener::NetworkListener; use profile_traits::mem::{self, OpaqueSender, Report, ReportKind, ReportsChan}; use profile_traits::time::{self, ProfilerCategory, profile}; @@ -2114,30 +2114,29 @@ impl ScriptThread { wrapper: None, }; ROUTER.add_route(action_receiver.to_opaque(), box move |message| { - listener.notify_action(message.to().unwrap()); + listener.notify_fetch(message.to().unwrap()); }); - let response_target = AsyncResponseTarget { - sender: action_sender, - }; if load_data.url.scheme() == "javascript" { load_data.url = Url::parse("about:blank").unwrap(); } - self.resource_threads.send(CoreResourceMsg::Load(NetLoadData { - context: LoadContext::Browsing, - url: load_data.url, + let request = RequestInit { + url: load_data.url.clone(), method: load_data.method, - headers: Headers::new(), - preserved_headers: load_data.headers, - data: load_data.data, - cors: None, + destination: Destination::Document, + credentials_mode: CredentialsMode::Include, + use_url_credentials: true, + origin: load_data.url, pipeline_id: Some(id), - credentials_flag: true, + referrer_url: load_data.referrer_url, referrer_policy: load_data.referrer_policy, - referrer_url: load_data.referrer_url - }, LoadConsumer::Listener(response_target), None)).unwrap(); + headers: load_data.headers, + body: load_data.data, + .. RequestInit::default() + }; + self.resource_threads.send(CoreResourceMsg::Fetch(request, action_sender)).unwrap(); self.incomplete_loads.borrow_mut().push(incomplete); } |