diff options
author | Josh Matthews <josh@joshmatthews.net> | 2017-01-12 12:39:05 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2017-02-01 12:54:33 -0500 |
commit | 32d4f84a30035b6b1094f7e68adbe1e6a883bb9b (patch) | |
tree | 03d3f355d08cf5fb1b790c64e5fff884e6cb79d1 /components/script/dom/serviceworkerglobalscope.rs | |
parent | bac2f68b541139702ac4347310cffe369f1bbb85 (diff) | |
download | servo-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.rs | 5 |
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"); |