aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/net/image_cache_task.rs
diff options
context:
space:
mode:
authorGlenn Watson <gw@intuitionlibrary.com>2014-07-07 15:43:47 +1000
committerGlenn Watson <gw@intuitionlibrary.com>2014-07-07 15:43:47 +1000
commit422bda73792fc1ac5ef589367b69841f2a02ced1 (patch)
tree89e6a25f3c6a28e2a28197a5f0fe45de4d399df6 /src/components/net/image_cache_task.rs
parente62637fee2f1c9627468dde81a68df1dd40b6bc9 (diff)
downloadservo-422bda73792fc1ac5ef589367b69841f2a02ced1.tar.gz
servo-422bda73792fc1ac5ef589367b69841f2a02ced1.zip
Warning police.
Diffstat (limited to 'src/components/net/image_cache_task.rs')
-rw-r--r--src/components/net/image_cache_task.rs107
1 files changed, 54 insertions, 53 deletions
diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs
index f4c067ada18..c6cba21ac64 100644
--- a/src/components/net/image_cache_task.rs
+++ b/src/components/net/image_cache_task.rs
@@ -80,52 +80,53 @@ impl<E, S: Encoder<E>> Encodable<S, E> for ImageCacheTask {
type DecoderFactory = fn() -> proc(&[u8]) -> Option<Image>;
-pub fn ImageCacheTask(resource_task: ResourceTask) -> ImageCacheTask {
- let (chan, port) = channel();
- let chan_clone = chan.clone();
-
- spawn(proc() {
- let mut cache = ImageCache {
- resource_task: resource_task.clone(),
- port: port,
- chan: chan_clone,
- state_map: url_map(),
- wait_map: url_map(),
- need_exit: None
- };
- cache.run();
- });
+impl ImageCacheTask {
+ pub fn new(resource_task: ResourceTask) -> ImageCacheTask {
+ let (chan, port) = channel();
+ let chan_clone = chan.clone();
+
+ spawn(proc() {
+ let mut cache = ImageCache {
+ resource_task: resource_task.clone(),
+ port: port,
+ chan: chan_clone,
+ state_map: url_map(),
+ wait_map: url_map(),
+ need_exit: None
+ };
+ cache.run();
+ });
- ImageCacheTask {
- chan: chan,
+ ImageCacheTask {
+ chan: chan,
+ }
}
-}
-// FIXME: make this priv after visibility rules change
-pub fn SyncImageCacheTask(resource_task: ResourceTask) -> ImageCacheTask {
- let (chan, port) = channel();
+ pub fn new_sync(resource_task: ResourceTask) -> ImageCacheTask {
+ let (chan, port) = channel();
- spawn(proc() {
- let inner_cache = ImageCacheTask(resource_task.clone());
+ spawn(proc() {
+ let inner_cache = ImageCacheTask::new(resource_task.clone());
- loop {
- let msg: Msg = port.recv();
+ loop {
+ let msg: Msg = port.recv();
- match msg {
- GetImage(url, response) => {
- inner_cache.send(WaitForImage(url, response));
- }
- Exit(response) => {
- inner_cache.send(Exit(response));
- break;
+ match msg {
+ GetImage(url, response) => {
+ inner_cache.send(WaitForImage(url, response));
+ }
+ Exit(response) => {
+ inner_cache.send(Exit(response));
+ break;
+ }
+ msg => inner_cache.send(msg)
}
- msg => inner_cache.send(msg)
}
- }
- });
+ });
- ImageCacheTask {
- chan: chan,
+ ImageCacheTask {
+ chan: chan,
+ }
}
}
@@ -581,7 +582,7 @@ mod tests {
fn should_exit_on_request() {
let mock_resource_task = mock_resource_task(box DoesNothing);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let _url = parse_url("file", None);
image_cache_task.exit();
@@ -593,7 +594,7 @@ mod tests {
fn should_fail_if_unprefetched_image_is_requested() {
let mock_resource_task = mock_resource_task(box DoesNothing);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let (chan, port) = channel();
@@ -607,7 +608,7 @@ mod tests {
let mock_resource_task = mock_resource_task(box JustSendOK { url_requested_chan: url_requested_chan});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url));
@@ -622,7 +623,7 @@ mod tests {
let mock_resource_task = mock_resource_task(box JustSendOK { url_requested_chan: url_requested_chan});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -642,7 +643,7 @@ mod tests {
let mock_resource_task = mock_resource_task(box WaitSendTestImage{wait_port: wait_port});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -659,7 +660,7 @@ mod tests {
fn should_return_decoded_image_data_if_data_has_arrived() {
let mock_resource_task = mock_resource_task(box SendTestImage);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store();
@@ -685,7 +686,7 @@ mod tests {
fn should_return_decoded_image_data_for_multiple_requests() {
let mock_resource_task = mock_resource_task(box SendTestImage);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store();
@@ -732,7 +733,7 @@ mod tests {
}
});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -778,7 +779,7 @@ mod tests {
}
});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -807,7 +808,7 @@ mod tests {
fn should_return_failed_if_image_bin_cannot_be_fetched() {
let mock_resource_task = mock_resource_task(box SendTestImageErr);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store_prefetched();
@@ -833,7 +834,7 @@ mod tests {
fn should_return_failed_for_multiple_get_image_requests_if_image_bin_cannot_be_fetched() {
let mock_resource_task = mock_resource_task(box SendTestImageErr);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store_prefetched();
@@ -867,7 +868,7 @@ mod tests {
fn should_return_failed_if_image_decode_fails() {
let mock_resource_task = mock_resource_task(box SendBogusImage);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store();
@@ -895,7 +896,7 @@ mod tests {
fn should_return_image_on_wait_if_image_is_already_loaded() {
let mock_resource_task = mock_resource_task(box SendTestImage);
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
let join_port = image_cache_task.wait_for_store();
@@ -923,7 +924,7 @@ mod tests {
let mock_resource_task = mock_resource_task(box WaitSendTestImage {wait_port: wait_port});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -949,7 +950,7 @@ mod tests {
let mock_resource_task = mock_resource_task(box WaitSendTestImageErr{wait_port: wait_port});
- let image_cache_task = ImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));
@@ -973,7 +974,7 @@ mod tests {
fn sync_cache_should_wait_for_images() {
let mock_resource_task = mock_resource_task(box SendTestImage);
- let image_cache_task = SyncImageCacheTask(mock_resource_task.clone());
+ let image_cache_task = ImageCacheTask::new_sync(mock_resource_task.clone());
let url = parse_url("file", None);
image_cache_task.send(Prefetch(url.clone()));