Associate ResourceTask with UrlProvenance

This commit is contained in:
James Sanders 2014-04-17 19:44:37 -06:00
parent 0b1c8bf8d6
commit 8bfb5f8b6f
2 changed files with 8 additions and 12 deletions

View file

@ -14,23 +14,21 @@ use url::Url;
/// Where a style sheet comes from.
pub enum StylesheetProvenance {
UrlProvenance(Url),
UrlProvenance(Url, ResourceTask),
InlineProvenance(Url, ~str),
}
// Parses the style data and returns the stylesheet
pub fn parse_inline_css(url: Url, data: ~str) -> Stylesheet {
let resource_task = ResourceTask(); // Resource task is not used for inline parsing
parse_css(InlineProvenance(url, data), resource_task)
parse_css(InlineProvenance(url, data))
}
fn parse_css(provenance: StylesheetProvenance,
resource_task: ResourceTask) -> Stylesheet {
fn parse_css(provenance: StylesheetProvenance) -> Stylesheet {
// TODO: Get the actual value. http://dev.w3.org/csswg/css-syntax/#environment-encoding
let environment_encoding = UTF_8 as EncodingRef;
match provenance {
UrlProvenance(url) => {
UrlProvenance(url, resource_task) => {
debug!("cssparse: loading style sheet at {:s}", url.to_str());
let (input_chan, input_port) = channel();
resource_task.send(Load(url, input_chan));
@ -50,13 +48,11 @@ fn parse_css(provenance: StylesheetProvenance,
}
}
pub fn spawn_css_parser(provenance: StylesheetProvenance,
resource_task: ResourceTask)
-> Receiver<Stylesheet> {
pub fn spawn_css_parser(provenance: StylesheetProvenance) -> Receiver<Stylesheet> {
let (result_chan, result_port) = channel();
spawn_named("cssparser", proc() {
result_chan.send(parse_css(provenance, resource_task));
result_chan.send(parse_css(provenance));
});
return result_port;

View file

@ -111,7 +111,7 @@ fn css_link_listener(to_parent: Sender<HtmlDiscoveryMessage>,
loop {
match from_parent.recv_opt() {
Some(CSSTaskNewFile(provenance)) => {
result_vec.push(spawn_css_parser(provenance, resource_task.clone()));
result_vec.push(spawn_css_parser(provenance));
}
Some(CSSTaskExit) | None => {
break;
@ -357,7 +357,7 @@ pub fn parse_html(page: &Page,
}) => {
debug!("found CSS stylesheet: {:s}", href.get().value_ref());
let url = parse_url(href.get().value_ref(), Some(url2.clone()));
css_chan2.send(CSSTaskNewFile(UrlProvenance(url)));
css_chan2.send(CSSTaskNewFile(UrlProvenance(url, resource_task.clone())));
}
_ => {}
}