aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/image_cache_task.rs
diff options
context:
space:
mode:
authorKshitij Parajuli <kshitijparajuli@gmail.com>2014-11-15 13:16:37 -0500
committerKshitij Parajuli <kshitijparajuli@gmail.com>2014-11-28 12:35:49 -0500
commitf5e9ae17cfc9e5fc9b04b765f613b78085404823 (patch)
tree37ad824d26860bb2255e2cf8f02a8fcb44ccf739 /components/net/image_cache_task.rs
parent82050d1e535681ea993e4290d02bcf4b9f4ee5a2 (diff)
downloadservo-f5e9ae17cfc9e5fc9b04b765f613b78085404823.tar.gz
servo-f5e9ae17cfc9e5fc9b04b765f613b78085404823.zip
Shared Sniffer Task
- Added TargetedLoadResponse and ResponseSenders - LoadData constructor contains the next consumer which means SnifferManager doesn't need the next consumer to start - New SnifferTask is created at new resource_task creation - Update Unit Tests
Diffstat (limited to 'components/net/image_cache_task.rs')
-rw-r--r--components/net/image_cache_task.rs32
1 files changed, 24 insertions, 8 deletions
diff --git a/components/net/image_cache_task.rs b/components/net/image_cache_task.rs
index 2f31aac04fc..d2fa908e47c 100644
--- a/components/net/image_cache_task.rs
+++ b/components/net/image_cache_task.rs
@@ -443,7 +443,7 @@ impl ImageCacheTask {
fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<Vec<u8>, ()> {
let (response_chan, response_port) = channel();
- resource_task.send(resource_task::Load(LoadData::new(url), response_chan));
+ resource_task.send(resource_task::Load(LoadData::new(url, response_chan)));
let mut image_data = vec!();
@@ -481,7 +481,8 @@ mod tests {
use super::*;
use resource_task;
- use resource_task::{ResourceTask, Metadata, start_sending};
+ use resource_task::{ResourceTask, Metadata, start_sending, ResponseSenders};
+ use sniffer_task;
use image::base::test_image_bin;
use servo_util::taskpool::TaskPool;
use std::comm;
@@ -557,8 +558,13 @@ mod tests {
spawn_listener(proc(port: Receiver<resource_task::ControlMsg>) {
loop {
match port.recv() {
- resource_task::Load(_, response) => {
- let chan = start_sending(response, Metadata::default(
+ resource_task::Load(response) => {
+ let sniffer_task = sniffer_task::new_sniffer_task();
+ let senders = ResponseSenders {
+ immediate_consumer: sniffer_task,
+ eventual_consumer: response.consumer.clone(),
+ };
+ let chan = start_sending(senders, Metadata::default(
Url::parse("file:///fake").unwrap()));
on_load.invoke(chan);
}
@@ -708,8 +714,13 @@ mod tests {
let mock_resource_task = spawn_listener(proc(port: Receiver<resource_task::ControlMsg>) {
loop {
match port.recv() {
- resource_task::Load(_, response) => {
- let chan = start_sending(response, Metadata::default(
+ resource_task::Load(response) => {
+ let sniffer_task = sniffer_task::new_sniffer_task();
+ let senders = ResponseSenders {
+ immediate_consumer: sniffer_task,
+ eventual_consumer: response.consumer.clone(),
+ };
+ let chan = start_sending(senders, Metadata::default(
Url::parse("file:///fake").unwrap()));
chan.send(resource_task::Payload(test_image_bin()));
chan.send(resource_task::Done(Ok(())));
@@ -755,8 +766,13 @@ mod tests {
let mock_resource_task = spawn_listener(proc(port: Receiver<resource_task::ControlMsg>) {
loop {
match port.recv() {
- resource_task::Load(_, response) => {
- let chan = start_sending(response, Metadata::default(
+ resource_task::Load(response) => {
+ let sniffer_task = sniffer_task::new_sniffer_task();
+ let senders = ResponseSenders {
+ immediate_consumer: sniffer_task,
+ eventual_consumer: response.consumer.clone(),
+ };
+ let chan = start_sending(senders, Metadata::default(
Url::parse("file:///fake").unwrap()));
chan.send(resource_task::Payload(test_image_bin()));
chan.send(resource_task::Done(Err("".to_string())));