aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/serviceworkerglobalscope.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2017-01-12 12:39:05 -0500
committerJosh Matthews <josh@joshmatthews.net>2017-02-01 12:54:33 -0500
commit32d4f84a30035b6b1094f7e68adbe1e6a883bb9b (patch)
tree03d3f355d08cf5fb1b790c64e5fff884e6cb79d1 /components/script/dom/serviceworkerglobalscope.rs
parentbac2f68b541139702ac4347310cffe369f1bbb85 (diff)
downloadservo-32d4f84a30035b6b1094f7e68adbe1e6a883bb9b.tar.gz
servo-32d4f84a30035b6b1094f7e68adbe1e6a883bb9b.zip
Generalize promise job queue into solitary microtask queue.
Diffstat (limited to 'components/script/dom/serviceworkerglobalscope.rs')
-rw-r--r--components/script/dom/serviceworkerglobalscope.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs
index 854a0ee0a75..553b016f0f8 100644
--- a/components/script/dom/serviceworkerglobalscope.rs
+++ b/components/script/dom/serviceworkerglobalscope.rs
@@ -210,10 +210,15 @@ impl ServiceWorkerGlobalScope {
global.dispatch_activate();
let reporter_name = format!("service-worker-reporter-{}", random::<u64>());
scope.upcast::<GlobalScope>().mem_profiler_chan().run_with_memory_reporting(|| {
+ // https://html.spec.whatwg.org/multipage/#event-loop-processing-model
+ // Step 1
while let Ok(event) = global.receive_event() {
+ // Step 3
if !global.handle_event(event) {
break;
}
+ // Step 6
+ global.upcast::<WorkerGlobalScope>().perform_a_microtask_checkpoint();
}
}, reporter_name, scope.script_chan(), CommonScriptMsg::CollectReports);
}).expect("Thread spawning failed");