Provide an interface to the engine for the script task

This commit is contained in:
Tim Kuehn 2013-06-06 15:16:05 -07:00 committed by Patrick Walton
parent abe6a06cbf
commit bf4df24521
7 changed files with 74 additions and 50 deletions

View file

@ -16,6 +16,7 @@ use layout_interface::{HitTestResponse, LayoutQuery, LayoutResponse, LayoutTask}
use layout_interface::{MatchSelectorsDocumentDamage, QueryMsg, Reflow, ReflowDocumentDamage};
use layout_interface::{ReflowForDisplay, ReflowForScriptQuery, ReflowGoal, ReflowMsg};
use layout_interface;
use engine_interface::{EngineTask, LoadUrlMsg};
use core::cast::transmute;
use core::cell::Cell;
@ -65,6 +66,7 @@ impl ScriptTask {
/// Creates a new script task.
pub fn new(script_port: Port<ScriptMsg>,
script_chan: SharedChan<ScriptMsg>,
engine_task: EngineTask,
layout_task: LayoutTask,
resource_task: ResourceTask,
image_cache_task: ImageCacheTask)
@ -78,6 +80,7 @@ impl ScriptTask {
let script_context = ScriptContext::new(layout_task.clone(),
script_port.take(),
script_chan_copy.clone(),
engine_task.clone(),
resource_task.clone(),
image_cache_task.clone());
script_context.start();
@ -117,6 +120,9 @@ pub struct ScriptContext {
/// messages.
script_chan: SharedChan<ScriptMsg>,
/// For communicating load url messages to the engine
engine_task: EngineTask,
/// The JavaScript runtime.
js_runtime: js::rust::rt,
/// The JavaScript context.
@ -168,6 +174,7 @@ impl ScriptContext {
pub fn new(layout_task: LayoutTask,
script_port: Port<ScriptMsg>,
script_chan: SharedChan<ScriptMsg>,
engine_task: EngineTask,
resource_task: ResourceTask,
img_cache_task: ImageCacheTask)
-> @mut ScriptContext {
@ -191,6 +198,8 @@ impl ScriptContext {
script_port: script_port,
script_chan: script_chan,
engine_task: engine_task,
js_runtime: js_runtime,
js_context: js_context,
js_compartment: compartment,
@ -552,7 +561,7 @@ impl ScriptContext {
debug!("clicked on link to %?", attr.value);
let url = from_str(attr.value);
match url {
Ok(url) => self.script_chan.send(LoadMsg(url)),
Ok(url) => self.engine_task.send(LoadUrlMsg(url)),
Err(msg) => debug!(msg)
};
break;