aboutsummaryrefslogtreecommitdiffstats
path: root/components/net_traits/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/net_traits/lib.rs')
-rw-r--r--components/net_traits/lib.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs
index 46fcc476843..d2ecae532be 100644
--- a/components/net_traits/lib.rs
+++ b/components/net_traits/lib.rs
@@ -132,8 +132,6 @@ pub struct PendingAsyncLoad {
resource_task: ResourceTask,
url: Url,
pipeline: Option<PipelineId>,
- input_sender: Sender<LoadResponse>,
- input_receiver: Receiver<LoadResponse>,
guard: PendingLoadGuard,
}
@@ -156,13 +154,10 @@ impl Drop for PendingLoadGuard {
impl PendingAsyncLoad {
pub fn new(resource_task: ResourceTask, url: Url, pipeline: Option<PipelineId>)
-> PendingAsyncLoad {
- let (sender, receiver) = channel();
PendingAsyncLoad {
resource_task: resource_task,
url: url,
pipeline: pipeline,
- input_sender: sender,
- input_receiver: receiver,
guard: PendingLoadGuard { loaded: false, },
}
}
@@ -171,9 +166,18 @@ impl PendingAsyncLoad {
pub fn load(mut self) -> Receiver<LoadResponse> {
self.guard.neuter();
let load_data = LoadData::new(self.url, self.pipeline);
- let consumer = LoadConsumer::Channel(self.input_sender);
+ let (sender, receiver) = channel();
+ let consumer = LoadConsumer::Channel(sender);
+ self.resource_task.send(ControlMsg::Load(load_data, consumer)).unwrap();
+ receiver
+ }
+
+ /// Initiate the network request associated with this pending load, using the provided target.
+ pub fn load_async(mut self, listener: Box<AsyncResponseTarget + Send>) {
+ self.guard.neuter();
+ let load_data = LoadData::new(self.url, self.pipeline);
+ let consumer = LoadConsumer::Listener(listener);
self.resource_task.send(ControlMsg::Load(load_data, consumer)).unwrap();
- self.input_receiver
}
}