aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/script_task.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-05-10 12:25:09 -0400
committerbors-servo <release+servo@mozilla.com>2014-05-10 12:25:09 -0400
commit9a71af38b98560376d3db2c210f91c1cf0770acd (patch)
tree17771e1704d2a0d3df43770007b2eb26c7a1a526 /src/components/script/script_task.rs
parent5334d8bb255c64f6d33250972a7ccf22de2afe34 (diff)
parent4b1b19fd115dff954f3cef9ab76ed0a23082ab2c (diff)
downloadservo-9a71af38b98560376d3db2c210f91c1cf0770acd.tar.gz
servo-9a71af38b98560376d3db2c210f91c1cf0770acd.zip
auto merge of #2393 : Ms2ger/servo/initialize_js_info, r=jdm
There is no particular leason to initilaize js_info lazily.
Diffstat (limited to 'src/components/script/script_task.rs')
-rw-r--r--src/components/script/script_task.rs25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs
index 3786091e7d7..c1e01bbc3bc 100644
--- a/src/components/script/script_task.rs
+++ b/src/components/script/script_task.rs
@@ -170,7 +170,12 @@ pub struct PageTreeIterator<'a> {
impl PageTree {
fn new(id: PipelineId, layout_chan: LayoutChan,
- window_size: Size2D<uint>, resource_task: ResourceTask) -> PageTree {
+ window_size: Size2D<uint>, resource_task: ResourceTask,
+ js_context: Rc<Cx>) -> PageTree {
+ let js_info = JSPageInfo {
+ dom_static: GlobalStaticData(),
+ js_context: Untraceable::new(js_context),
+ };
PageTree {
page: Rc::new(Page {
id: id,
@@ -179,7 +184,7 @@ impl PageTree {
layout_join_port: Untraceable::new(RefCell::new(None)),
damage: Traceable::new(RefCell::new(None)),
window_size: Untraceable::new(Cell::new(window_size)),
- js_info: Traceable::new(RefCell::new(None)),
+ js_info: Traceable::new(RefCell::new(Some(js_info))),
url: Untraceable::new(RefCell::new(None)),
next_subpage_id: Untraceable::new(Cell::new(SubpageId(0))),
resize_event: Untraceable::new(Cell::new(None)),
@@ -432,13 +437,6 @@ impl Page {
}
}
- pub fn initialize_js_info(&self, js_context: Rc<Cx>) {
- *self.mut_js_info() = Some(JSPageInfo {
- dom_static: GlobalStaticData(),
- js_context: Untraceable::new(js_context),
- });
- }
-
pub fn hit_test(&self, point: &Point2D<f32>) -> Option<UntrustedNodeAddress> {
let frame = self.frame();
let document = frame.get_ref().document.root();
@@ -596,9 +594,10 @@ impl ScriptTask {
window_size: Size2D<uint>)
-> Rc<ScriptTask> {
let (js_runtime, js_context) = ScriptTask::new_rt_and_cx();
+ let page_tree = PageTree::new(id, layout_chan, window_size,
+ resource_task.clone(), js_context.clone());
Rc::new(ScriptTask {
- page_tree: RefCell::new(PageTree::new(id, layout_chan,
- window_size, resource_task.clone())),
+ page_tree: RefCell::new(page_tree),
image_cache_task: img_cache_task,
resource_task: resource_task,
@@ -781,7 +780,8 @@ impl ScriptTask {
let new_page_tree = {
let window_size = parent_page_tree.page().window_size.deref().get();
PageTree::new(new_id, layout_chan, window_size,
- parent_page_tree.page().resource_task.deref().clone())
+ parent_page_tree.page().resource_task.deref().clone(),
+ self.js_context.borrow().get_ref().clone())
};
parent_page_tree.inner.push(new_page_tree);
}
@@ -927,7 +927,6 @@ impl ScriptTask {
self.chan.clone(),
self.compositor.dup(),
self.image_cache_task.clone()).root();
- page.initialize_js_info(cx.clone());
let mut document = Document::new(&*window, Some(url.clone()), HTMLDocument, None).root();
window.deref_mut().init_browser_context(&*document);