aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/html
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
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')
-rw-r--r--src/components/script/html/cssparse.rs48
-rw-r--r--src/components/script/html/hubbub_html_parser.rs4
2 files changed, 35 insertions, 17 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
}
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs
index 7aba3987f53..66d85e0dfac 100644
--- a/src/components/script/html/hubbub_html_parser.rs
+++ b/src/components/script/html/hubbub_html_parser.rs
@@ -29,7 +29,7 @@ use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_res
use servo_util::tree::{TreeNodeRef, ElementLike};
use servo_util::url::make_url;
use extra::url::Url;
-use extra::future::{Future, from_port};
+use extra::future::Future;
use geom::size::Size2D;
macro_rules! handle_element(
@@ -431,7 +431,7 @@ pub fn parse_html(cx: *JSContext,
// Size future
let (port, chan) = comm::oneshot();
- let size_future = from_port(port);
+ let size_future = Future::from_port(port);
// Subpage Id
let subpage_id = next_subpage_id.take();