Pass the javscript file url to the evaluate function

This commit is contained in:
Tom Schuster 2013-08-31 20:07:08 -04:00
parent c532c73964
commit a0d900e1f6
2 changed files with 16 additions and 7 deletions

View file

@ -59,7 +59,12 @@ macro_rules! handle_htmlelement(
) )
) )
type JSResult = ~[~[u8]]; pub struct JSFile {
data: ~[u8],
url: Url
}
type JSResult = ~[JSFile];
enum CSSMessage { enum CSSMessage {
CSSTaskNewFile(StylesheetProvenance), CSSTaskNewFile(StylesheetProvenance),
@ -145,6 +150,7 @@ fn js_script_listener(to_parent: SharedChan<HtmlDiscoveryMessage>,
JSTaskNewFile(url) => { JSTaskNewFile(url) => {
let (result_port, result_chan) = comm::stream(); let (result_port, result_chan) = comm::stream();
let resource_task = resource_task.clone(); let resource_task = resource_task.clone();
let url_clone = url.clone();
do task::spawn { do task::spawn {
let (input_port, input_chan) = comm::stream(); let (input_port, input_chan) = comm::stream();
// TODO: change copy to move once we can move into closures // TODO: change copy to move once we can move into closures
@ -168,7 +174,11 @@ fn js_script_listener(to_parent: SharedChan<HtmlDiscoveryMessage>,
} }
} }
} }
result_vec.push(result_port);
let bytes = result_port.recv();
if bytes.is_some() {
result_vec.push(JSFile { data: bytes.unwrap(), url: url_clone });
}
} }
JSTaskExit => { JSTaskExit => {
break; break;
@ -176,8 +186,7 @@ fn js_script_listener(to_parent: SharedChan<HtmlDiscoveryMessage>,
} }
} }
let js_scripts = result_vec.iter().filter_map(|result_port| result_port.recv()).collect(); to_parent.send(HtmlDiscoveredScript(result_vec));
to_parent.send(HtmlDiscoveredScript(js_scripts));
} }
// Silly macros to handle constructing DOM nodes. This produces bad code and should be optimized // Silly macros to handle constructing DOM nodes. This produces bad code and should be optimized

View file

@ -682,10 +682,10 @@ impl ScriptTask {
js_info.js_compartment.define_functions(debug_fns); js_info.js_compartment.define_functions(debug_fns);
// Evaluate every script in the document. // Evaluate every script in the document.
for bytes in js_scripts.iter() { for file in js_scripts.iter() {
let _ = js_info.js_context.evaluate_script(js_info.js_compartment.global_obj, let _ = js_info.js_context.evaluate_script(js_info.js_compartment.global_obj,
bytes.clone(), file.data.clone(),
~"???", file.url.to_str(),
1); 1);
} }
} }