diff options
Diffstat (limited to 'components/script/dom/bindings')
-rw-r--r-- | components/script/dom/bindings/global.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index 1040e7b5965..6593fc36b8f 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -23,7 +23,7 @@ use net_traits::filemanager_thread::FileManagerThreadMsg; use net_traits::{ResourceThreads, CoreResourceThread, RequestSource, IpcSend}; use profile_traits::{mem, time}; 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 task_source::dom_manipulation::DOMManipulationTaskSource; use timers::{OneshotTimerCallback, OneshotTimerHandle}; @@ -297,6 +297,15 @@ impl<'a> GlobalRef<'a> { 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 { |