diff options
author | Jack Moffitt <jack@metajack.im> | 2013-10-14 23:11:35 -0600 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2013-10-21 17:38:34 -0600 |
commit | 94202661c03500fffcc7ec3e566e2a2a168c7dfc (patch) | |
tree | 111764fc98e2cfe3995e2c9d20332c29b989f761 /src/components/script/html/cssparse.rs | |
parent | 8b47221ff8c77281eb55c5c671f23ae455cfe6bd (diff) | |
download | servo-94202661c03500fffcc7ec3e566e2a2a168c7dfc.tar.gz servo-94202661c03500fffcc7ec3e566e2a2a168c7dfc.zip |
Update to latest Rust.
Diffstat (limited to 'src/components/script/html/cssparse.rs')
-rw-r--r-- | src/components/script/html/cssparse.rs | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/src/components/script/html/cssparse.rs b/src/components/script/html/cssparse.rs index 3123a2d24e8..e6383599d39 100644 --- a/src/components/script/html/cssparse.rs +++ b/src/components/script/html/cssparse.rs @@ -10,7 +10,7 @@ use std::comm::Port; use std::task; use newcss::stylesheet::Stylesheet; use newcss::util::DataStream; -use servo_net::resource_task::{Load, LoadResponse, Payload, Done, ResourceTask}; +use servo_net::resource_task::{Load, LoadResponse, Payload, Done, ResourceTask, ProgressMsg}; use extra::url::Url; /// Where a style sheet comes from. @@ -41,7 +41,7 @@ pub fn spawn_css_parser(provenance: StylesheetProvenance, return result_port; } -fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> DataStream { +fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> @mut DataStream { match provenance { UrlProvenance(url) => { debug!("cssparse: loading style sheet at %s", url.to_str()); @@ -55,26 +55,44 @@ fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> } } -fn resource_port_to_data_stream(input_port: Port<LoadResponse>) -> DataStream { +fn resource_port_to_data_stream(input_port: Port<LoadResponse>) -> @mut DataStream { let progress_port = input_port.recv().progress_port; - return || { - match progress_port.recv() { - Payload(data) => Some(data), - Done(*) => None + struct ResourcePortDataStream { + progress_port: Port<ProgressMsg>, + }; + impl DataStream for ResourcePortDataStream { + fn read(&mut self) -> Option<~[u8]> { + match self.progress_port.recv() { + Payload(data) => Some(data), + Done(*) => None + } } } + let stream = @mut ResourcePortDataStream { + progress_port: progress_port, + }; + stream as @mut DataStream } -fn data_to_data_stream(data: ~str) -> DataStream { +fn data_to_data_stream(data: ~str) -> @mut DataStream { let data_cell = Cell::new(data); - return || { - if data_cell.is_empty() { - None - } else { - // FIXME: Blech, a copy. - let data = data_cell.take(); - Some(data.as_bytes().to_owned()) + struct DataDataStream { + data_cell: Cell<~str>, + }; + impl DataStream for DataDataStream { + fn read(&mut self) -> Option<~[u8]> { + if self.data_cell.is_empty() { + None + } else { + // FIXME: Blech, a copy. + let data = self.data_cell.take(); + Some(data.as_bytes().to_owned()) + } } } + let stream = @mut DataDataStream { + data_cell: data_cell, + }; + stream as @mut DataStream } |