diff options
Diffstat (limited to 'dom/serviceworkers/ServiceWorkerOpArgs.ipdlh')
-rw-r--r-- | dom/serviceworkers/ServiceWorkerOpArgs.ipdlh | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/dom/serviceworkers/ServiceWorkerOpArgs.ipdlh b/dom/serviceworkers/ServiceWorkerOpArgs.ipdlh new file mode 100644 index 0000000000..302b677a2e --- /dev/null +++ b/dom/serviceworkers/ServiceWorkerOpArgs.ipdlh @@ -0,0 +1,191 @@ +/* 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 { + 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 |