auto merge of #4960 : pkondzior/servo/add-script-timers-suspend-resume-functionality, r=jdm

Adds free/thaw methods to script_task that let you send suspend/resume messages to web content timers. Fixes #4907
This commit is contained in:
bors-servo 2015-02-23 21:45:46 -07:00
commit a3ea3eed47
6 changed files with 105 additions and 9 deletions

View file

@ -580,6 +580,10 @@ impl ScriptTask {
panic!("should have handled ExitPipeline already"),
ConstellationControlMsg::GetTitle(pipeline_id) =>
self.handle_get_title_msg(pipeline_id),
ConstellationControlMsg::Freeze(pipeline_id) =>
self.handle_freeze_msg(pipeline_id),
ConstellationControlMsg::Thaw(pipeline_id) =>
self.handle_thaw_msg(pipeline_id)
}
}
@ -663,6 +667,26 @@ impl ScriptTask {
window.r().handle_fire_timer(timer_id);
}
/// Handles freeze message
fn handle_freeze_msg(&self, id: PipelineId) {
let page = self.page.borrow_mut();
let page = page.find(id).expect("ScriptTask: received freeze msg for a
pipeline ID not associated with this script task. This is a bug.");
let frame = page.frame();
let window = frame.as_ref().unwrap().window.root();
window.r().freeze();
}
/// Handles thaw message
fn handle_thaw_msg(&self, id: PipelineId) {
let page = self.page.borrow_mut();
let page = page.find(id).expect("ScriptTask: received thaw msg for a
pipeline ID not associated with this script task. This is a bug.");
let frame = page.frame();
let window = frame.as_ref().unwrap().window.root();
window.r().thaw();
}
/// Handles a notification that reflow completed.
fn handle_reflow_complete_msg(&self, pipeline_id: PipelineId, reflow_id: uint) {
debug!("Script: Reflow {:?} complete for {:?}", reflow_id, pipeline_id);