aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/net/image_cache_task.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-05-08 23:40:15 +0200
committerJack Moffitt <jack@metajack.im>2014-05-22 16:36:40 -0600
commiteaedeb07cb0c4fdda37f35057588e4a769fbe758 (patch)
treecdeb134482f06818f7d6dbad8e008882fcc336a5 /src/components/net/image_cache_task.rs
parent3644d0272c89336954358eb5005f884a9c89e8bc (diff)
downloadservo-eaedeb07cb0c4fdda37f35057588e4a769fbe758.tar.gz
servo-eaedeb07cb0c4fdda37f35057588e4a769fbe758.zip
Update Rust.
Diffstat (limited to 'src/components/net/image_cache_task.rs')
-rw-r--r--src/components/net/image_cache_task.rs75
1 files changed, 37 insertions, 38 deletions
diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs
index 63abfd62348..2bb8b22323b 100644
--- a/src/components/net/image_cache_task.rs
+++ b/src/components/net/image_cache_task.rs
@@ -37,21 +37,21 @@ pub enum Msg {
// FIXME: We can probably get rid of this Cell now
/// Used be the prefetch tasks to post back image binaries
- priv StorePrefetchedImageData(Url, Result<~[u8], ()>),
+ StorePrefetchedImageData(Url, Result<~[u8], ()>),
/// Used by the decoder tasks to post decoded images back to the cache
- priv StoreImage(Url, Option<Arc<~Image>>),
+ StoreImage(Url, Option<Arc<Box<Image>>>),
/// For testing
- priv WaitForStore(Sender<()>),
+ WaitForStore(Sender<()>),
/// For testing
- priv WaitForStorePrefetched(Sender<()>),
+ WaitForStorePrefetched(Sender<()>),
}
#[deriving(Clone)]
pub enum ImageResponseMsg {
- ImageReady(Arc<~Image>),
+ ImageReady(Arc<Box<Image>>),
ImageNotReady,
ImageFailed
}
@@ -156,7 +156,7 @@ enum ImageState {
Prefetching(AfterPrefetch),
Prefetched(~[u8]),
Decoding,
- Decoded(Arc<~Image>),
+ Decoded(Arc<Box<Image>>),
Failed
}
@@ -327,7 +327,7 @@ impl ImageCache {
debug!("image_cache_task: started image decode for {:s}", url.to_str());
let image = load_from_memory(data);
let image = if image.is_some() {
- Some(Arc::new(~image.unwrap()))
+ Some(Arc::new(box image.unwrap()))
} else {
None
};
@@ -344,7 +344,7 @@ impl ImageCache {
}
}
- fn store_image(&mut self, url: Url, image: Option<Arc<~Image>>) {
+ fn store_image(&mut self, url: Url, image: Option<Arc<Box<Image>>>) {
match self.get_state(url.clone()) {
Decoding => {
@@ -376,14 +376,14 @@ impl ImageCache {
Some(waiters) => {
let val = waiters.lock();
let items = unsafe {
- cast::transmute::<*(), ~[Sender<ImageResponseMsg>]>(*val)
+ cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val)
};
for response in items.iter() {
response.send(f());
}
let _ = unsafe {
// Cast back to avoid the drop at the end.
- cast::transmute::<~[Sender<ImageResponseMsg>], *()>(items)
+ cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items)
};
}
None => ()
@@ -414,18 +414,18 @@ impl ImageCache {
let mut response = Some(response);
let val = waiters.lock();
let mut items = unsafe {
- cast::transmute::<*(), ~[Sender<ImageResponseMsg>]>(*val)
+ cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val)
};
items.push(response.take().unwrap());
let _ = unsafe {
// Cast back to avoid the drop at the end.
- cast::transmute::<~[Sender<ImageResponseMsg>], *()>(items)
+ cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items)
};
} else {
- let response = ~[response];
+ let response = box vec!(response);
let wrapped = unsafe {
Arc::new(Mutex::new(
- cast::transmute::<~[Sender<ImageResponseMsg>], *()>(response)))
+ cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(response)))
};
self.wait_map.insert(url, wrapped);
@@ -481,7 +481,7 @@ fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> {
let (response_chan, response_port) = channel();
resource_task.send(resource_task::Load(url, response_chan));
- let mut image_data = ~[];
+ let mut image_data = vec!();
let progress_port = response_port.recv().progress_port;
loop {
@@ -490,7 +490,7 @@ fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> {
image_data.push_all(data.as_slice());
}
resource_task::Done(result::Ok(..)) => {
- return Ok(image_data);
+ return Ok(image_data.move_iter().collect());
}
resource_task::Done(result::Err(..)) => {
return Err(());
@@ -521,7 +521,6 @@ mod tests {
use image::base::test_image_bin;
use servo_util::url::parse_url;
use std::comm;
- use std::comm::{Empty, Data, Disconnected};
trait Closure {
fn invoke(&self, _response: Sender<resource_task::ProgressMsg>) { }
@@ -589,7 +588,7 @@ mod tests {
}
}
- fn mock_resource_task<T: Closure+Send>(on_load: ~T) -> ResourceTask {
+ fn mock_resource_task<T: Closure+Send>(on_load: Box<T>) -> ResourceTask {
spawn_listener(proc(port: Receiver<resource_task::ControlMsg>) {
loop {
match port.recv() {
@@ -605,7 +604,7 @@ mod tests {
#[test]
fn should_exit_on_request() {
- let mock_resource_task = mock_resource_task(~DoesNothing);
+ let mock_resource_task = mock_resource_task(box DoesNothing);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let _url = parse_url("file", None);
@@ -617,7 +616,7 @@ mod tests {
#[test]
#[should_fail]
fn should_fail_if_unprefetched_image_is_requested() {
- let mock_resource_task = mock_resource_task(~DoesNothing);
+ let mock_resource_task = mock_resource_task(box DoesNothing);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -631,7 +630,7 @@ mod tests {
fn should_request_url_from_resource_task_on_prefetch() {
let (url_requested_chan, url_requested) = channel();
- let mock_resource_task = mock_resource_task(~JustSendOK { url_requested_chan: url_requested_chan});
+ 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 url = parse_url("file", None);
@@ -646,7 +645,7 @@ mod tests {
fn should_not_request_url_from_resource_task_on_multiple_prefetches() {
let (url_requested_chan, url_requested) = comm::channel();
- let mock_resource_task = mock_resource_task(~JustSendOK { url_requested_chan: url_requested_chan});
+ 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 url = parse_url("file", None);
@@ -657,8 +656,8 @@ mod tests {
image_cache_task.exit();
mock_resource_task.send(resource_task::Exit);
match url_requested.try_recv() {
- Empty | Disconnected => (),
- Data(_) => assert!(false),
+ Err(_) => (),
+ Ok(_) => fail!(),
};
}
@@ -666,7 +665,7 @@ mod tests {
fn should_return_image_not_ready_if_data_has_not_arrived() {
let (wait_chan, wait_port) = comm::channel();
- let mock_resource_task = mock_resource_task(~WaitSendTestImage{wait_port: wait_port});
+ let mock_resource_task = mock_resource_task(box WaitSendTestImage{wait_port: wait_port});
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -683,7 +682,7 @@ mod tests {
#[test]
fn should_return_decoded_image_data_if_data_has_arrived() {
- let mock_resource_task = mock_resource_task(~SendTestImage);
+ let mock_resource_task = mock_resource_task(box SendTestImage);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -709,7 +708,7 @@ mod tests {
#[test]
fn should_return_decoded_image_data_for_multiple_requests() {
- let mock_resource_task = mock_resource_task(~SendTestImage);
+ let mock_resource_task = mock_resource_task(box SendTestImage);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -776,8 +775,8 @@ mod tests {
// Our resource task should not have received another request for the image
// because it's already cached
match image_bin_sent.try_recv() {
- Empty | Disconnected => (),
- Data(_) => assert!(false),
+ Err(_) => (),
+ Ok(_) => fail!(),
}
}
@@ -824,14 +823,14 @@ mod tests {
// Our resource task should not have received another request for the image
// because it's already cached
match image_bin_sent.try_recv() {
- Empty | Disconnected => (),
- Data(_) => assert!(false),
+ Err(_) => (),
+ Ok(_) => fail!(),
}
}
#[test]
fn should_return_failed_if_image_bin_cannot_be_fetched() {
- let mock_resource_task = mock_resource_task(~SendTestImageErr);
+ let mock_resource_task = mock_resource_task(box SendTestImageErr);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -857,7 +856,7 @@ mod tests {
#[test]
fn should_return_failed_for_multiple_get_image_requests_if_image_bin_cannot_be_fetched() {
- let mock_resource_task = mock_resource_task(~SendTestImageErr);
+ let mock_resource_task = mock_resource_task(box SendTestImageErr);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -891,7 +890,7 @@ mod tests {
#[test]
fn should_return_failed_if_image_decode_fails() {
- let mock_resource_task = mock_resource_task(~SendBogusImage);
+ let mock_resource_task = mock_resource_task(box SendBogusImage);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -919,7 +918,7 @@ mod tests {
#[test]
fn should_return_image_on_wait_if_image_is_already_loaded() {
- let mock_resource_task = mock_resource_task(~SendTestImage);
+ let mock_resource_task = mock_resource_task(box SendTestImage);
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -947,7 +946,7 @@ mod tests {
fn should_return_image_on_wait_if_image_is_not_yet_loaded() {
let (wait_chan, wait_port) = comm::channel();
- let mock_resource_task = mock_resource_task(~WaitSendTestImage {wait_port: wait_port});
+ let mock_resource_task = mock_resource_task(box WaitSendTestImage {wait_port: wait_port});
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -973,7 +972,7 @@ mod tests {
fn should_return_image_failed_on_wait_if_image_fails_to_load() {
let (wait_chan, wait_port) = comm::channel();
- let mock_resource_task = mock_resource_task(~WaitSendTestImageErr{wait_port: wait_port});
+ let mock_resource_task = mock_resource_task(box WaitSendTestImageErr{wait_port: wait_port});
let image_cache_task = ImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);
@@ -997,7 +996,7 @@ mod tests {
#[test]
fn sync_cache_should_wait_for_images() {
- let mock_resource_task = mock_resource_task(~SendTestImage);
+ let mock_resource_task = mock_resource_task(box SendTestImage);
let image_cache_task = SyncImageCacheTask(mock_resource_task.clone());
let url = parse_url("file", None);