| <!DOCTYPE html> |
| <html> |
| <title>Service Workers: navigator.serviceWorker</title> |
| <head> |
| <link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#navigator-service-worker"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script src=/resources/WebIDLParser.js></script> |
| <script src=/resources/idlharness.js></script> |
| |
| </head> |
| <body> |
| |
| <!-- |
| The `serviceWorker` attribute of the [Navigator][1] interface must return an |
| instance of the `ServiceWorkerContainer` interface, which provides access to |
| registration, removal, upgrade, and communication with Service Workers that are |
| (or will become) active for the current document. Communication with these |
| workers is provided via standard [HTML5 messaging APIs][2], and [messaging |
| occurs as per usual with Web Workers][3]. |
| --> |
| <script type=text/plain id="idl_0"> |
| partial interface Navigator { |
| readonly attribute ServiceWorkerContainer serviceWorker; |
| }; |
| |
| interface ServiceWorkerContainer : EventTarget { |
| [Unforgeable] readonly attribute ServiceWorker? installing; |
| [Unforgeable] readonly attribute ServiceWorker? waiting; |
| [Unforgeable] readonly attribute ServiceWorker? active; |
| [Unforgeable] readonly attribute ServiceWorker? controller; |
| readonly attribute Promise<ServiceWorker> ready; |
| |
| Promise<sequence<ServiceWorker>?> getAll(); |
| Promise<ServiceWorker> register(DOMString url, optional RegistrationOptionList options); |
| Promise<any> unregister(DOMString? scope); |
| |
| // events |
| attribute EventHandler onupdatefound; |
| attribute EventHandler oncontrollerchange; |
| attribute EventHandler onreloadpage; |
| attribute EventHandler onerror; |
| }; |
| |
| dictionary RegistrationOptionList { |
| DOMString scope = "/*"; |
| }; |
| |
| interface ReloadPageEvent : Event { |
| void waitUntil(Promise<any> f); |
| }; |
| </script> |
| |
| <!-- |
| [1]: http://goo.gl/I7WAhg |
| [2]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html |
| [3]: http://www.w3.org/TR/workers/#dom-worker-postmessage |
| --> |
| |
| |
| <script type=text/plain id="untested_idls"> |
| interface ServiceWorker {}; |
| interface EventHandler {}; |
| interface EventTarget {}; |
| interface Event {}; |
| </pre> |
| |
| <script> |
| var idl_array = new IdlArray(); |
| idl_array.add_untested_idls(document.getElementById("untested_idls").textContent); |
| idl_array.add_idls(document.getElementById("idl_0").textContent); |
| idl_array.add_objects({ |
| Navigator: ["throw new Error ('No object defined for the Navigator interface')"], |
| ServiceWorkerContainer: ["throw new Error ('No object defined for the ServiceWorkerContainer interface')"], |
| RegistrationOptionList: ["throw new Error ('No object defined for the RegistrationOptionList dictionary')"], |
| ReloadPageEvent: ["throw new Error ('No object defined for the ReloadPageEvent interface')"] |
| }); |
| idl_array.test(); |
| </script> |
| |
| </body> |
| </html> |
| |