Source code

Revision control

Copy as Markdown

Other Tools

/* 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 ClientIPCTypes;
include DOMTypes;
include FetchTypes;
include "mozilla/dom/ServiceWorkerIPCUtils.h";
using mozilla::dom::ServiceWorkerState from "mozilla/dom/ServiceWorkerBinding.h";
using mozilla::TimeStamp from "mozilla/TimeStamp.h";
namespace mozilla {
namespace dom {
/**
* ServiceWorkerOpArgs
*/
struct ServiceWorkerCheckScriptEvaluationOpArgs {};
struct ServiceWorkerUpdateStateOpArgs {
ServiceWorkerState state;
};
struct ServiceWorkerTerminateWorkerOpArgs {
uint32_t shutdownStateId;
};
struct ServiceWorkerLifeCycleEventOpArgs {
nsString eventName;
};
// Possibly need to differentiate an empty array from the absence of an array.
union OptionalPushData {
void_t;
uint8_t[];
};
struct ServiceWorkerPushEventOpArgs {
nsString messageId;
OptionalPushData data;
};
struct ServiceWorkerPushSubscriptionChangeEventOpArgs {};
struct ServiceWorkerNotificationEventOpArgs {
nsString eventName;
nsString id;
nsString title;
nsString dir;
nsString lang;
nsString body;
nsString tag;
nsString icon;
nsString data;
nsString behavior;
nsString scope;
uint32_t disableOpenClickDelay;
};
struct ServiceWorkerExtensionAPIEventOpArgs {
// WebExtensions API namespace and event names, for a list of the API namespaces
// and related API event names refer to the API JSONSchema files in-tree:
//
nsString apiNamespace;
nsString apiEventName;
};
struct ServiceWorkerMessageEventOpArgs {
ClientInfoAndState clientInfoAndState;
ClonedOrErrorMessageData clonedData;
};
struct ServiceWorkerFetchEventOpArgsCommon {
nsCString workerScriptSpec;
IPCInternalRequest internalRequest;
nsString clientId;
nsString resultingClientId;
bool isNonSubresourceRequest;
// Is navigation preload enabled for this fetch? If true, if some
// preloadResponse was not already provided in this structure, then it's
// expected that a PreloadResponse message will eventually be sent.
bool preloadNavigation;
// Failure injection helper; non-NS_OK values indicate that the event, instead
// of dispatching should instead return a `CancelInterceptionArgs` response
// with this nsresult. This value originates from
// `nsIServiceWorkerInfo::testingInjectCancellation`.
nsresult testingInjectCancellation;
};
struct ParentToParentServiceWorkerFetchEventOpArgs {
ServiceWorkerFetchEventOpArgsCommon common;
ParentToParentInternalResponse? preloadResponse;
ResponseTiming? preloadResponseTiming;
ResponseEndArgs? preloadResponseEndArgs;
};
struct ParentToChildServiceWorkerFetchEventOpArgs {
ServiceWorkerFetchEventOpArgsCommon common;
ParentToChildInternalResponse? preloadResponse;
ResponseTiming? preloadResponseTiming;
ResponseEndArgs? preloadResponseEndArgs;
};
union ServiceWorkerOpArgs {
ServiceWorkerCheckScriptEvaluationOpArgs;
ServiceWorkerUpdateStateOpArgs;
ServiceWorkerTerminateWorkerOpArgs;
ServiceWorkerLifeCycleEventOpArgs;
ServiceWorkerPushEventOpArgs;
ServiceWorkerPushSubscriptionChangeEventOpArgs;
ServiceWorkerNotificationEventOpArgs;
ServiceWorkerMessageEventOpArgs;
ServiceWorkerExtensionAPIEventOpArgs;
ParentToChildServiceWorkerFetchEventOpArgs;
};
/**
* IPCFetchEventRespondWithResult
*/
struct FetchEventRespondWithClosure {
nsCString respondWithScriptSpec;
uint32_t respondWithLineNumber;
uint32_t respondWithColumnNumber;
};
struct FetchEventTimeStamps {
TimeStamp fetchHandlerStart;
TimeStamp fetchHandlerFinish;
};
struct ChildToParentSynthesizeResponseArgs {
ChildToParentInternalResponse internalResponse;
FetchEventRespondWithClosure closure;
FetchEventTimeStamps timeStamps;
};
struct ParentToParentSynthesizeResponseArgs {
ParentToParentInternalResponse internalResponse;
FetchEventRespondWithClosure closure;
FetchEventTimeStamps timeStamps;
};
struct ResetInterceptionArgs {
FetchEventTimeStamps timeStamps;
};
struct CancelInterceptionArgs {
nsresult status;
FetchEventTimeStamps timeStamps;
};
union ChildToParentFetchEventRespondWithResult {
ChildToParentSynthesizeResponseArgs;
ResetInterceptionArgs;
CancelInterceptionArgs;
};
union ParentToParentFetchEventRespondWithResult {
ParentToParentSynthesizeResponseArgs;
ResetInterceptionArgs;
CancelInterceptionArgs;
};
/**
* ServiceWorkerOpResult
*/
struct ServiceWorkerCheckScriptEvaluationOpResult {
bool workerScriptExecutedSuccessfully;
bool fetchHandlerWasAdded;
};
struct ServiceWorkerFetchEventOpResult {
nsresult rv;
};
struct ServiceWorkerExtensionAPIEventOpResult {
bool extensionAPIEventListenerWasAdded;
};
union ServiceWorkerOpResult {
nsresult;
ServiceWorkerCheckScriptEvaluationOpResult;
ServiceWorkerFetchEventOpResult;
ServiceWorkerExtensionAPIEventOpResult;
};
} // namespace dom
} // namespace mozilla