mirror of
https://github.com/servo/servo.git
synced 2025-07-25 16:20:36 +01:00
Allow wrapping worker runnables in cancellable runnables.
This commit is contained in:
parent
2cab846140
commit
0e4865ea1a
2 changed files with 17 additions and 1 deletions
|
@ -23,7 +23,7 @@ use net_traits::filemanager_thread::FileManagerThreadMsg;
|
||||||
use net_traits::{ResourceThreads, CoreResourceThread, RequestSource, IpcSend};
|
use net_traits::{ResourceThreads, CoreResourceThread, RequestSource, IpcSend};
|
||||||
use profile_traits::{mem, time};
|
use profile_traits::{mem, time};
|
||||||
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort};
|
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort};
|
||||||
use script_thread::{MainThreadScriptChan, ScriptThread};
|
use script_thread::{MainThreadScriptChan, ScriptThread, RunnableWrapper};
|
||||||
use script_traits::{MsDuration, ScriptMsg as ConstellationMsg, TimerEventRequest};
|
use script_traits::{MsDuration, ScriptMsg as ConstellationMsg, TimerEventRequest};
|
||||||
use task_source::dom_manipulation::DOMManipulationTaskSource;
|
use task_source::dom_manipulation::DOMManipulationTaskSource;
|
||||||
use timers::{OneshotTimerCallback, OneshotTimerHandle};
|
use timers::{OneshotTimerCallback, OneshotTimerHandle};
|
||||||
|
@ -297,6 +297,15 @@ impl<'a> GlobalRef<'a> {
|
||||||
GlobalRef::Worker(ref worker) => worker.panic_chan(),
|
GlobalRef::Worker(ref worker) => worker.panic_chan(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a wrapper for runnables to ensure they are cancelled if the global
|
||||||
|
/// is being destroyed.
|
||||||
|
pub fn get_runnable_wrapper(&self) -> RunnableWrapper {
|
||||||
|
match *self {
|
||||||
|
GlobalRef::Window(ref window) => window.get_runnable_wrapper(),
|
||||||
|
GlobalRef::Worker(ref worker) => worker.get_runnable_wrapper(),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GlobalRoot {
|
impl GlobalRoot {
|
||||||
|
|
|
@ -29,6 +29,7 @@ use net_traits::{LoadContext, ResourceThreads, load_whole_resource};
|
||||||
use net_traits::{RequestSource, LoadOrigin, CustomResponseSender, IpcSend};
|
use net_traits::{RequestSource, LoadOrigin, CustomResponseSender, IpcSend};
|
||||||
use profile_traits::{mem, time};
|
use profile_traits::{mem, time};
|
||||||
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, maybe_take_panic_result};
|
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, maybe_take_panic_result};
|
||||||
|
use script_thread::RunnableWrapper;
|
||||||
use script_traits::ScriptMsg as ConstellationMsg;
|
use script_traits::ScriptMsg as ConstellationMsg;
|
||||||
use script_traits::{MsDuration, TimerEvent, TimerEventId, TimerEventRequest, TimerSource};
|
use script_traits::{MsDuration, TimerEvent, TimerEventId, TimerEventRequest, TimerSource};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
@ -268,6 +269,12 @@ impl WorkerGlobalScope {
|
||||||
pub fn panic_chan(&self) -> &IpcSender<PanicMsg> {
|
pub fn panic_chan(&self) -> &IpcSender<PanicMsg> {
|
||||||
&self.panic_chan
|
&self.panic_chan
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_runnable_wrapper(&self) -> RunnableWrapper {
|
||||||
|
RunnableWrapper {
|
||||||
|
cancelled: self.closing.clone(),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LoadOrigin for WorkerGlobalScope {
|
impl LoadOrigin for WorkerGlobalScope {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue