aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-10-04 15:27:13 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-10-06 21:35:51 +0200
commitca8c6fb0724a364bdd11742a9c9611557595a6f7 (patch)
tree45d15fe73d666e2f61d20d23d97bef12d88ad50b /components/script
parent991801488c97fd74d814c6591064379400e06d1e (diff)
downloadservo-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.rs2
-rw-r--r--components/script/dom/workerglobalscope.rs2
-rw-r--r--components/script/script_thread.rs8
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) {