aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/html/cssparse.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2013-10-22 09:16:17 -0700
committerbors-servo <release+servo@mozilla.com>2013-10-22 09:16:17 -0700
commit797143a1d3e09b4ddd35a1ce5948be424ec3f9ef (patch)
treec0f9307660adbc23308ea41505f0cf922fcd4af4 /src/components/script/html/cssparse.rs
parent4d8f7fd056cc59cce02de9f3e710116ea8a85afe (diff)
parent2558c723c9444dd4957a3131d7e68b56495b32ea (diff)
downloadservo-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.rs48
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
}