mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 12:51:06 +00:00
6e5b348a26
ServiceWorkers aren't exposed as clients, so when we are sending a postMessage from them, we need to capture their ServiceWorkerDescriptor and propagate that instead of the client state. Differential Revision: https://phabricator.services.mozilla.com/D213721
192 lines
5.0 KiB
Plaintext
192 lines
5.0 KiB
Plaintext
/* 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:
|
|
//
|
|
// https://searchfox.org/mozilla-central/search?q=&path=extensions%2Fschemas%2F*.json
|
|
nsString apiNamespace;
|
|
nsString apiEventName;
|
|
};
|
|
|
|
struct ServiceWorkerMessageEventOpArgs {
|
|
PostMessageSource source;
|
|
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
|