summaryrefslogtreecommitdiffstats
path: root/dom/serviceworkers/docs
diff options
context:
space:
mode:
Diffstat (limited to 'dom/serviceworkers/docs')
-rw-r--r--dom/serviceworkers/docs/telemetry.md42
1 files changed, 42 insertions, 0 deletions
diff --git a/dom/serviceworkers/docs/telemetry.md b/dom/serviceworkers/docs/telemetry.md
new file mode 100644
index 0000000000..864b6bec25
--- /dev/null
+++ b/dom/serviceworkers/docs/telemetry.md
@@ -0,0 +1,42 @@
+1. ServiceWorkerRegistrar loading. The ability to determine whether to intercept
+ is based on this. (Although if not loaded, it's possible to just not intercept.)
+
+2. Process launching. ServiceWorkers need to be launched into a process, and
+ under fission this will almost certainly be a new process, and at startup we
+ might not be able to depend on preallocated processes.
+
+3. Permission transmission.
+
+4. Worker launching. The act of spawning the worker thread in the content process.
+
+5. Script loading.
+ Cache API opening for the given origin.
+ QuotaManager storage and temporary storage initialization, which has to
+ happen before the Cache API can start accessing its files.
+
+6. Fetch request serialization / deserialization to parent process.
+
+7. InterceptedHttpChannel creation for the fetch request.
+
+8. Creating FetchEvent related objects and propagting to the content process
+ worker thread.
+
+9. Handle FetchEvent by the ServiceWorker's script.
+
+10. Propagating the response from ServiceWorker to parent process.
+
+11. Synthesizing the response for the intercepted channel.
+
+12. Reset the interception by redirecting to a normal http channel or cancel the
+ interception.
+
+13. Push data into the intercepted channel.
+
+Telemetry probes cover:
+
+1: SERVICE_WORKER_REGISTRATION_LOADING
+2-4: SERVICE_WORKER_LAUNCH_TIME_2
+2-5, 7-13: SERVICE_WORKER_FETCH_INTERCEPTION_DURATION_MS_2
+7-9: SERVICE_WORKER_FETCH_EVENT_DISPATCH_MS_2
+11: SERVICE_WORKER_FETCH_EVENT_FINISH_SYNTHESIZED_RESPONSE_MS_2
+12: SERVICE_WORKER_FETCH_EVENT_CHANNEL_RESET_MS_2