diff options
author | bors-servo <release+servo@mozilla.com> | 2013-10-22 09:16:17 -0700 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2013-10-22 09:16:17 -0700 |
commit | 797143a1d3e09b4ddd35a1ce5948be424ec3f9ef (patch) | |
tree | c0f9307660adbc23308ea41505f0cf922fcd4af4 /src/components/script/html/cssparse.rs | |
parent | 4d8f7fd056cc59cce02de9f3e710116ea8a85afe (diff) | |
parent | 2558c723c9444dd4957a3131d7e68b56495b32ea (diff) | |
download | servo-797143a1d3e09b4ddd35a1ce5948be424ec3f9ef.tar.gz servo-797143a1d3e09b4ddd35a1ce5948be424ec3f9ef.zip |
auto merge of #1067 : metajack/servo/rust-up-20131014, r=jdm
This upgrades to this morning's master. We have unfortunately broken the Android build, but I will update that in a second pull request as I think it's more than a single upgrade behind.
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 } |