Avoid PendingAsyncLoad in fetch_async.

This commit is contained in:
Ms2ger 2016-10-04 11:17:05 +02:00
parent fc251384a7
commit 59689475af
4 changed files with 8 additions and 18 deletions

View file

@ -536,13 +536,6 @@ impl PendingAsyncLoad {
let consumer = LoadConsumer::Listener(listener); let consumer = LoadConsumer::Listener(listener);
self.core_resource_thread.send(CoreResourceMsg::Load(load_data, consumer, None)).unwrap(); self.core_resource_thread.send(CoreResourceMsg::Load(load_data, consumer, None)).unwrap();
} }
/// Initiate the fetch associated with this pending load.
pub fn fetch_async(mut self, request: RequestInit, fetch_target: IpcSender<FetchResponseMsg>) {
self.guard.neuter();
self.core_resource_thread.send(CoreResourceMsg::Fetch(request, fetch_target)).unwrap();
}
} }
/// Message sent in response to `Load`. Contains metadata, and a port /// Message sent in response to `Load`. Contains metadata, and a port

View file

@ -9,8 +9,8 @@ use dom::bindings::js::JS;
use dom::document::Document; use dom::document::Document;
use ipc_channel::ipc::IpcSender; use ipc_channel::ipc::IpcSender;
use msg::constellation_msg::{PipelineId, ReferrerPolicy}; use msg::constellation_msg::{PipelineId, ReferrerPolicy};
use net_traits::{AsyncResponseTarget, PendingAsyncLoad, LoadContext}; use net_traits::{AsyncResponseTarget, CoreResourceMsg, PendingAsyncLoad};
use net_traits::{FetchResponseMsg, ResourceThreads, IpcSend}; use net_traits::{FetchResponseMsg, LoadContext, ResourceThreads, IpcSend};
use net_traits::request::RequestInit; use net_traits::request::RequestInit;
use std::thread; use std::thread;
use url::Url; use url::Url;
@ -154,11 +154,9 @@ impl DocumentLoader {
pub fn fetch_async(&mut self, pub fn fetch_async(&mut self,
load: LoadType, load: LoadType,
request: RequestInit, request: RequestInit,
fetch_target: IpcSender<FetchResponseMsg>, fetch_target: IpcSender<FetchResponseMsg>) {
referrer: &Document, self.add_blocking_load(load);
referrer_policy: Option<ReferrerPolicy>) { self.resource_threads.sender().send(CoreResourceMsg::Fetch(request, fetch_target)).unwrap();
let pending = self.prepare_async_load(load, referrer, referrer_policy);
pending.fetch_async(request, fetch_target);
} }
/// Mark an in-progress network request complete. /// Mark an in-progress network request complete.

View file

@ -1441,10 +1441,9 @@ impl Document {
pub fn fetch_async(&self, load: LoadType, pub fn fetch_async(&self, load: LoadType,
request: RequestInit, request: RequestInit,
fetch_target: IpcSender<FetchResponseMsg>, fetch_target: IpcSender<FetchResponseMsg>) {
referrer_policy: Option<ReferrerPolicy>) {
let mut loader = self.loader.borrow_mut(); let mut loader = self.loader.borrow_mut();
loader.fetch_async(load, request, fetch_target, self, referrer_policy); loader.fetch_async(load, request, fetch_target);
} }
pub fn finish_load(&self, load: LoadType) { pub fn finish_load(&self, load: LoadType) {

View file

@ -271,7 +271,7 @@ fn fetch_a_classic_script(script: &HTMLScriptElement,
ROUTER.add_route(action_receiver.to_opaque(), box move |message| { ROUTER.add_route(action_receiver.to_opaque(), box move |message| {
listener.notify_fetch(message.to().unwrap()); listener.notify_fetch(message.to().unwrap());
}); });
doc.fetch_async(LoadType::Script(url), request, action_sender, None); doc.fetch_async(LoadType::Script(url), request, action_sender);
} }
impl HTMLScriptElement { impl HTMLScriptElement {