189 lines
6.9 KiB
Plaintext
189 lines
6.9 KiB
Plaintext
/* -*- 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"
|
|
#include "nsIRequest.idl"
|
|
|
|
interface mozIDOMWindow;
|
|
interface nsPIDOMWindowInner;
|
|
interface mozIDOMWindowProxy;
|
|
interface nsIArray;
|
|
interface nsIDocument;
|
|
interface nsIInterceptedChannel;
|
|
interface nsIPrincipal;
|
|
interface nsIRunnable;
|
|
interface nsIURI;
|
|
%{C++
|
|
namespace mozilla {
|
|
namespace dom {
|
|
class ClientInfo;
|
|
class ServiceWorkerDescriptor;
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
%}
|
|
|
|
[ref] native const_ClientInfoRef(const mozilla::dom::ClientInfo);
|
|
[ref] native const_ServiceWorkerDescriptorRef(const mozilla::dom::ServiceWorkerDescriptor);
|
|
|
|
[scriptable, uuid(52ee2c9d-ee87-4caf-9588-23ae77ff8798)]
|
|
interface nsIServiceWorkerUnregisterCallback : nsISupports
|
|
{
|
|
// aState is true if the unregistration succeded.
|
|
// It's false if this ServiceWorkerRegistration doesn't exist.
|
|
void unregisterSucceeded(in bool aState);
|
|
void unregisterFailed();
|
|
};
|
|
|
|
interface nsIWorkerDebugger;
|
|
|
|
[scriptable, builtinclass, uuid(76e357ed-208d-4e4c-9165-1c4059707879)]
|
|
interface nsIServiceWorkerInfo : nsISupports
|
|
{
|
|
// State values below should match the ServiceWorkerState enumeration.
|
|
const unsigned short STATE_PARSED = 0;
|
|
const unsigned short STATE_INSTALLING = 1;
|
|
const unsigned short STATE_INSTALLED = 2;
|
|
const unsigned short STATE_ACTIVATING = 3;
|
|
const unsigned short STATE_ACTIVATED = 4;
|
|
const unsigned short STATE_REDUNDANT = 5;
|
|
const unsigned short STATE_UNKNOWN = 6;
|
|
|
|
readonly attribute DOMString scriptSpec;
|
|
readonly attribute DOMString cacheName;
|
|
|
|
readonly attribute unsigned short state;
|
|
|
|
readonly attribute nsIWorkerDebugger debugger;
|
|
|
|
readonly attribute bool handlesFetchEvents;
|
|
|
|
readonly attribute PRTime installedTime;
|
|
readonly attribute PRTime activatedTime;
|
|
readonly attribute PRTime redundantTime;
|
|
|
|
void attachDebugger();
|
|
|
|
void detachDebugger();
|
|
};
|
|
|
|
[scriptable, uuid(87e63548-d440-4b8a-b158-65ad1de0211E)]
|
|
interface nsIServiceWorkerRegistrationInfoListener : nsISupports
|
|
{
|
|
void onChange();
|
|
};
|
|
|
|
[scriptable, builtinclass, uuid(ddbc1fd4-2f2e-4fca-a395-6e010bbedfe3)]
|
|
interface nsIServiceWorkerRegistrationInfo : nsISupports
|
|
{
|
|
// State values below should match the ServiceWorkerUpdateViaCache enumeration.
|
|
const unsigned short UPDATE_VIA_CACHE_IMPORTS = 0;
|
|
const unsigned short UPDATE_VIA_CACHE_ALL = 1;
|
|
const unsigned short UPDATE_VIA_CACHE_NONE = 2;
|
|
|
|
readonly attribute nsIPrincipal principal;
|
|
|
|
readonly attribute DOMString scope;
|
|
readonly attribute DOMString scriptSpec;
|
|
readonly attribute unsigned short updateViaCache;
|
|
|
|
readonly attribute PRTime lastUpdateTime;
|
|
|
|
readonly attribute nsIServiceWorkerInfo installingWorker;
|
|
readonly attribute nsIServiceWorkerInfo waitingWorker;
|
|
readonly attribute nsIServiceWorkerInfo activeWorker;
|
|
|
|
// Allows to get the related nsIServiceWorkerInfo for a given
|
|
// nsIWorkerDebugger. Over time we shouldn't need this anymore,
|
|
// and instead always control then nsIWorkerDebugger from
|
|
// nsIServiceWorkerInfo and not the other way around. Returns
|
|
// null if the service worker is no longer registered.
|
|
nsIServiceWorkerInfo getWorkerByID(in unsigned long long aID);
|
|
|
|
void addListener(in nsIServiceWorkerRegistrationInfoListener listener);
|
|
|
|
void removeListener(in nsIServiceWorkerRegistrationInfoListener listener);
|
|
};
|
|
|
|
[scriptable, uuid(9e523e7c-ad6f-4df0-8077-c74aebbc679d)]
|
|
interface nsIServiceWorkerManagerListener : nsISupports
|
|
{
|
|
void onRegister(in nsIServiceWorkerRegistrationInfo aInfo);
|
|
|
|
void onUnregister(in nsIServiceWorkerRegistrationInfo aInfo);
|
|
};
|
|
|
|
[scriptable, builtinclass, uuid(7404c8e8-4d47-4449-8ed1-47d1261d4e33)]
|
|
interface nsIServiceWorkerManager : nsISupports
|
|
{
|
|
/**
|
|
* Unregister an existing ServiceWorker registration for `aScope`.
|
|
* It keeps aCallback alive until the operation is concluded.
|
|
*/
|
|
void unregister(in nsIPrincipal aPrincipal,
|
|
in nsIServiceWorkerUnregisterCallback aCallback,
|
|
in DOMString aScope);
|
|
|
|
nsIServiceWorkerRegistrationInfo getRegistrationByPrincipal(in nsIPrincipal aPrincipal,
|
|
in DOMString aScope);
|
|
|
|
[notxpcom, nostdcall] bool StartControlling(in const_ClientInfoRef aClientInfo,
|
|
in const_ServiceWorkerDescriptorRef aServiceWorker);
|
|
|
|
// Testing
|
|
DOMString getScopeForUrl(in nsIPrincipal aPrincipal, in DOMString aPath);
|
|
|
|
// It returns an array of nsIServiceWorkerRegistrationInfos.
|
|
nsIArray getAllRegistrations();
|
|
|
|
// It calls softUpdate() for each child process.
|
|
[implicit_jscontext] void propagateSoftUpdate(in jsval aOriginAttributes,
|
|
in DOMString aScope);
|
|
|
|
// It calls unregister() in each child process. The callback is used to
|
|
// inform when unregister() is completed on the current process.
|
|
void propagateUnregister(in nsIPrincipal aPrincipal,
|
|
in nsIServiceWorkerUnregisterCallback aCallback,
|
|
in DOMString aScope);
|
|
|
|
void sendNotificationClickEvent(in ACString aOriginSuffix,
|
|
in ACString scope,
|
|
in AString aID,
|
|
in AString aTitle,
|
|
in AString aDir,
|
|
in AString aLang,
|
|
in AString aBody,
|
|
in AString aTag,
|
|
in AString aIcon,
|
|
in AString aData,
|
|
in AString aBehavior);
|
|
|
|
void sendNotificationCloseEvent(in ACString aOriginSuffix,
|
|
in ACString scope,
|
|
in AString aID,
|
|
in AString aTitle,
|
|
in AString aDir,
|
|
in AString aLang,
|
|
in AString aBody,
|
|
in AString aTag,
|
|
in AString aIcon,
|
|
in AString aData,
|
|
in AString aBehavior);
|
|
|
|
[optional_argc] void sendPushEvent(in ACString aOriginAttributes,
|
|
in ACString aScope,
|
|
[optional] in uint32_t aDataLength,
|
|
[optional, array, size_is(aDataLength)] in uint8_t aDataBytes);
|
|
void sendPushSubscriptionChangeEvent(in ACString aOriginAttributes,
|
|
in ACString scope);
|
|
|
|
void addListener(in nsIServiceWorkerManagerListener aListener);
|
|
|
|
void removeListener(in nsIServiceWorkerManagerListener aListener);
|
|
};
|
|
|
|
%{ C++
|
|
#define SERVICEWORKERMANAGER_CONTRACTID "@mozilla.org/serviceworkers/manager;1"
|
|
%}
|