/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "domstubs.idl" interface nsIDocument; interface nsIURI; [builtinclass, uuid(d6a9d4b6-39b0-4cd2-957d-28a57df5a031)] interface nsIServiceWorkerUnregisterCallback : nsISupports { // aState is true if the unregistration succeded. // It's false if this ServiceWorkerRegistration doesn't exist. [noscript] void UnregisterSucceeded(in bool aState); [noscript] void UnregisterFailed(); }; [builtinclass, uuid(79ad5b57-d65d-46d3-b5e9-32d27e16052d)] interface nsIServiceWorkerManager : nsISupports { /** * Registers a ServiceWorker with script loaded from `aScriptURI` to act as * the ServiceWorker for aScope. Requires a valid entry settings object on * the stack. This means you must call this from content code 'within' * a window. * * Returns a Promise. */ nsISupports register(in DOMString aScope, in DOMString aScriptURI); /** * Unregister an existing ServiceWorker registration for `aScope`. * It keeps aCallback alive until the operation is concluded. */ void unregister(in nsIServiceWorkerUnregisterCallback aCallback, in DOMString aScope); // Returns a Promise nsISupports getRegistrations(in nsIDOMWindow aWindow); // Returns a Promise nsISupports getRegistration(in nsIDOMWindow aWindow, in DOMString aScope); // Returns a Promise nsISupports getReadyPromise(in nsIDOMWindow aWindow); // Remove ready pending Promise void removeReadyPromise(in nsIDOMWindow aWindow); // aTarget MUST be a ServiceWorkerRegistration. [noscript] void AddRegistrationEventListener(in nsIURI aPageURI, in nsIDOMEventTarget aTarget); [noscript] void RemoveRegistrationEventListener(in nsIURI aPageURI, in nsIDOMEventTarget aTarget); /** * Call this to request that document `aDoc` be controlled by a ServiceWorker * if a registration exists for it's scope. * * This MUST only be called once per document! */ [notxpcom,nostdcall] void MaybeStartControlling(in nsIDocument aDoc); /** * Documents that have called MaybeStartControlling() should call this when * they are destroyed. This function may be called multiple times, and is * idempotent. */ [notxpcom,nostdcall] void MaybeStopControlling(in nsIDocument aDoc); /* * Returns a ServiceWorker. * window is the window of the caller. scope is the registration's scope and must be * a valid entry that window is allowed to load, otherwise this will return nullptr. * These are only meant to be called from ServiceWorkerRegistration instances. */ [noscript] nsISupports GetInstalling(in nsIDOMWindow aWindow, in DOMString aScope); [noscript] nsISupports GetWaiting(in nsIDOMWindow aWindow, in DOMString aScope); [noscript] nsISupports GetActive(in nsIDOMWindow aWindow, in DOMString aScope); /* * Returns a ServiceWorker. */ [noscript] nsISupports GetDocumentController(in nsIDOMWindow aWindow); // Testing DOMString getScopeForUrl(in DOMString path); }; %{ C++ #define SERVICEWORKERMANAGER_CONTRACTID "@mozilla.org/serviceworkers/manager;1" %}