Service Workers

Ambox outdated.png THIS PAGE MAY BE OUTDATED
This article is in parts, or in its entirety, outdated. Hence, the information presented on this page may be incorrect, and should be treated with due caution until this flag has been lifted. Help by editing the article, or discuss its contents on the talk page.

Service Workers are presently being implemented in Gecko. Biweekly calls (2015-08-12 is the next one) are held on Wednesdays at 8 AM Pacific in the WebAPI Vidyo room to discuss status and blockers for consumers. Email Andrew Overholt [:overholt] if you want to be added to the meeting invite or just show up.

Most people working on the implementation hang out in #content on IRC.

Implementation status

Lots of code has been written and much functionality exists. There are a variety of prefs you can flip in about:config to turn them on: dom.serviceWorkers.enabled, dom.serviceWorkers.interception.enabled, etc.

Filing bugs (in Core :: DOM: Service Workers) describing problems you have is highly appreciated.

An audit of call sites where existing networking security functionality can be affected by a Service Worker's interception is underway. The results of this are filtering into Bugzilla and the remaining blockers are tracked as below.

Shipping on Desktop (planned for 44) (bug 1059784)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Bugs we should fix to be compatible with the specification (bug 1226983)

Full Query
ID Summary Status Assigned to Resolution
1170795 Calling FetchEvent.respondWith() with a malformed synthesized redirected response causes us to hit the network NEW
1183625 support fetch window option NEW
1187300 Verify if interception occurs for channels created by Downloads.jsm when possible NEW
1201160 Service workers violate SOP for "no-cors" CSS REOPENED
1203747 Performance timing API should record on Service Workers NEW
1209102 fetch() should not allow redirects to data URIs NEW
1228149 Return the same ServiceWorkerRegistration object from service worker APIs on workers NEW
1248417 test and implement relative redirects behavior during service worker interception NEW
1255275 Return the same ServiceWorkerRegistration object from service worker APIs exposed from ServiceWorkerContainer on workers NEW
1263670 Consider reloading when a document restored from bfcache gets controlled by a different service worker NEW
1264180 Implement Client.ancestorOrigins REOPENED
1282426 fetch spec requires lower case headers, but UA added headers are mixed case NEW
1290950 intercept notification icon loads when opened from a service worker (or not) NEW
1291893 basic authorization header is not added to service worker fetch() network request NEW
1304382 unregister service workers if cookies are blocked for an origin NEW
1330319 Headers in Headers object not lexicographically sorted NEW
1339434 match spec change to remove skip-service-worker flag NEW
1341301 Resending form post data is broken if a service worker is registered NEW
1342484 [meta] Support Fetch keepalive flag and enforce limit on inflight keepalive bytes NEW
1349589 Enable fetch cancellation by default on nightly NEW
1360870 Implement "module" service workers NEW Harveer Singh
1362769 Firefox retrieves non-PBM push notifications from the push server, when the user launches Firefox with new PBM window UNCONFIRMED
1362824 A blob created from a fetch response does not correctly get type set UNCONFIRMED
1378587 Default value for dom.serviceWorker.idle_timeout too agressive NEW
1384006 What's the right JSContext state to pass to cache::PutAll() in Cache::FetchHandler::ResolvedCallback ? NEW
1388774 Track total synthesized body size better during service worker interception NEW
1394102 FetchEvent.request.signal should be correctly aborted NEW
1402785 Require a user gesture for Notification.requestPermission() NEW
1409007 service worker update does not trigger if loading is blocked with X-Frame-Options:Deny NEW
1415003 pass through SW should propagate outer network channel priority to the fetch() channel NEW
1417338 fetch sets wrong Content-Type header on redirects UNCONFIRMED
1418457 propagate the internal error code from Response to the outer intercepted channel NEW
1418489 observing a window is gone via Clients API should evict it from bfcache NEW
1426401 Consider persisting waiting worker state to disk and triggering an activate event on/after next browser start NEW Artur Iunusov
1428130 remove cookie permission preload after service worker code checks storage access in parent process. NEW
1444944 Fetch API Body readers to not propagate underlying errors to Promise rejection NEW
1448979 service worker interception should propagate redirect count to enforce redirect limits NEW
1455077 investigate where service worker code should call NS_CheckContentLoadPolicy() NEW
1456105 Fetch: Content-Encoding decoding failure should be a TypeError NEW
1456479 Implement Request.isReloadNavigation NEW
1459781 service worker fetch event not happen when html generated from document.write NEW
1464739 Implement isHistoryNavigation attribute on Request UNCONFIRMED
1465074 Allow range requests to pass through a service worker NEW
1466499 Inline replies to web notifications should be supported UNCONFIRMED
1467454 cross-origin stylesheet load without "crossorigin" attribute treats service worker synthesized CORS response as opaque NEW
1467998 <script> element without "cross-origin" attribute treats service worker synthesized CORS response as opaque REOPENED Harveer Singh
1487534 Implement FetchEvent.replacesClientId the "resulting" clientId (previously dubbed targetClientId) NEW

47 Total; 47 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Shipping on Fennec (aka Firefox for Android) (bug 1207262)

Full Query
ID Summary Status Assigned to Resolution
1210282 Intermittent android debug failures NEW

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Refactoring for n content processes (bug 1231208)

Full Query
ID Summary Status Assigned to Resolution
1314658 Update the security check in NeckoParent::GetValidatedAppInfo NEW
1355899 Stop eagerly transmitting the cookie permission to the content process for service workers NEW
1360255 Add a test for loading a service-worker managed document in a new process NEW
1429805 display service worker console messages on related windows in different child processes NEW
1432311 fetch() requests initiated by a serviceworker are missing in the network panel NEW
1472303 ServiceWorkerRegistration::Update() should block self-update during evaluation regardless of Inner implementation NEW
1514916 Decide what to do with currently-failing console monitoring tests in parent-intercept mode NEW
1604543 ServiceWorkerManager::ReportToAllClients needs to be updated for sw-e10s [syntax errors in script evaluation receive the reported-to-content MSG_SW_INSTALL_ERROR but not the syntax errors] NEW

8 Total; 8 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Shipping for web content on Boot2Gecko (aka Firefox OS) (bug 1207265)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Shipping for Gaia (bug 1131322)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Things we likely won't get to in the first release supporting Service Workers (bug 1173500)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Demos/examples