diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-10-04 15:27:13 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-10-06 21:35:51 +0200 |
commit | ca8c6fb0724a364bdd11742a9c9611557595a6f7 (patch) | |
tree | 45d15fe73d666e2f61d20d23d97bef12d88ad50b /components/script | |
parent | 991801488c97fd74d814c6591064379400e06d1e (diff) | |
download | servo-ca8c6fb0724a364bdd11742a9c9611557595a6f7.tar.gz servo-ca8c6fb0724a364bdd11742a9c9611557595a6f7.zip |
Make RunnableWrapper store an Option<Arc<AtomicBool>>
This makes WorkerGlobalScope::get_runnable_wrapper not panic anymore
when the worker is a ServiceWorkerGlobalScope.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/window.rs | 2 | ||||
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 2 | ||||
-rw-r--r-- | components/script/script_thread.rs | 8 |
3 files changed, 7 insertions, 5 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 4365ba44999..5f5b0bda04a 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -868,7 +868,7 @@ impl WindowMethods for Window { impl Window { pub fn get_runnable_wrapper(&self) -> RunnableWrapper { RunnableWrapper { - cancelled: self.ignore_further_async_events.clone() + cancelled: Some(self.ignore_further_async_events.clone()), } } diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 49b1d4e3257..f1f2229c823 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -155,7 +155,7 @@ impl WorkerGlobalScope { pub fn get_runnable_wrapper(&self) -> RunnableWrapper { RunnableWrapper { - cancelled: self.closing.clone().unwrap(), + cancelled: self.closing.clone(), } } diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 0d3f605fac1..bbdc766cea4 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -170,7 +170,7 @@ impl InProgressLoad { /// Encapsulated state required to create cancellable runnables from non-script threads. pub struct RunnableWrapper { - pub cancelled: Arc<AtomicBool>, + pub cancelled: Option<Arc<AtomicBool>>, } impl RunnableWrapper { @@ -184,7 +184,7 @@ impl RunnableWrapper { /// A runnable that can be discarded by toggling a shared flag. pub struct CancellableRunnable<T: Runnable + Send> { - cancelled: Arc<AtomicBool>, + cancelled: Option<Arc<AtomicBool>>, inner: Box<T>, } @@ -192,7 +192,9 @@ impl<T: Runnable + Send> Runnable for CancellableRunnable<T> { fn name(&self) -> &'static str { self.inner.name() } fn is_cancelled(&self) -> bool { - self.cancelled.load(Ordering::SeqCst) + self.cancelled.as_ref() + .map(|cancelled| cancelled.load(Ordering::SeqCst)) + .unwrap_or(false) } fn main_thread_handler(self: Box<CancellableRunnable<T>>, script_thread: &ScriptThread) { |