diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-05-08 23:40:15 +0200 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2014-05-22 16:36:40 -0600 |
commit | eaedeb07cb0c4fdda37f35057588e4a769fbe758 (patch) | |
tree | cdeb134482f06818f7d6dbad8e008882fcc336a5 /src/components/net/image_cache_task.rs | |
parent | 3644d0272c89336954358eb5005f884a9c89e8bc (diff) | |
download | servo-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.rs | 75 |
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); |