diff options
-rw-r--r-- | src/components/script/html/hubbub_html_parser.rs | 17 | ||||
-rw-r--r-- | src/components/script/script_task.rs | 6 |
2 files changed, 16 insertions, 7 deletions
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 081c6a1ba25..d1c0b640c1d 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -59,7 +59,12 @@ macro_rules! handle_htmlelement( ) ) -type JSResult = ~[~[u8]]; +pub struct JSFile { + data: ~[u8], + url: Url +} + +type JSResult = ~[JSFile]; enum CSSMessage { CSSTaskNewFile(StylesheetProvenance), @@ -145,6 +150,7 @@ fn js_script_listener(to_parent: SharedChan<HtmlDiscoveryMessage>, JSTaskNewFile(url) => { let (result_port, result_chan) = comm::stream(); let resource_task = resource_task.clone(); + let url_clone = url.clone(); do task::spawn { let (input_port, input_chan) = comm::stream(); // 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 => { 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(js_scripts)); + to_parent.send(HtmlDiscoveredScript(result_vec)); } // Silly macros to handle constructing DOM nodes. This produces bad code and should be optimized diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index d6531fcba8b..37d9caf242a 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -682,10 +682,10 @@ impl ScriptTask { js_info.js_compartment.define_functions(debug_fns); // 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, - bytes.clone(), - ~"???", + file.data.clone(), + file.url.to_str(), 1); } } |