Bug 1231213 - Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth

Differential Revision: https://phabricator.services.mozilla.com/D26164

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Perry Jiang 2019-08-13 19:55:35 +00:00
parent dc552f6370
commit 4f8a83ad57
3 changed files with 167 additions and 0 deletions

View File

@ -0,0 +1,129 @@
/* 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 ChannelInfo;
include ClientIPCTypes;
include DOMTypes;
include FetchTypes;
using ServiceWorkerState from "mozilla/dom/ServiceWorkerIPCUtils.h";
namespace mozilla {
namespace dom {
/**
* ServiceWorkerOpArgs
*/
struct ServiceWorkerCheckScriptEvaluationOpArgs {};
struct ServiceWorkerUpdateStateOpArgs {
ServiceWorkerState state;
};
struct ServiceWorkerTerminateWorkerOpArgs {};
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 ServiceWorkerMessageEventOpArgs {
ClientInfoAndState clientInfoAndState;
ClonedMessageData clonedData;
};
struct ServiceWorkerFetchEventOpArgs {
nsCString workerScriptSpec;
IPCInternalRequest internalRequest;
nsString clientId;
nsString resultingClientId;
bool isReload;
bool isNonSubresourceRequest;
};
union ServiceWorkerOpArgs {
ServiceWorkerCheckScriptEvaluationOpArgs;
ServiceWorkerUpdateStateOpArgs;
ServiceWorkerTerminateWorkerOpArgs;
ServiceWorkerLifeCycleEventOpArgs;
ServiceWorkerPushEventOpArgs;
ServiceWorkerPushSubscriptionChangeEventOpArgs;
ServiceWorkerNotificationEventOpArgs;
ServiceWorkerMessageEventOpArgs;
ServiceWorkerFetchEventOpArgs;
};
/**
* IPCFetchEventRespondWithResult
*/
struct FetchEventRespondWithClosure {
nsCString respondWithScriptSpec;
uint32_t respondWithLineNumber;
uint32_t respondWithColumnNumber;
};
struct IPCSynthesizeResponseArgs {
IPCInternalResponse internalResponse;
FetchEventRespondWithClosure closure;
};
struct ResetInterceptionArgs {};
struct CancelInterceptionArgs {
nsresult status;
};
union IPCFetchEventRespondWithResult {
IPCSynthesizeResponseArgs;
ResetInterceptionArgs;
CancelInterceptionArgs;
};
/**
* ServiceWorkerOpResult
*/
struct ServiceWorkerCheckScriptEvaluationOpResult {
bool workerScriptExecutedSuccessfully;
bool fetchHandlerWasAdded;
};
struct ServiceWorkerFetchEventOpResult {
nsresult rv;
};
union ServiceWorkerOpResult {
nsresult;
ServiceWorkerCheckScriptEvaluationOpResult;
ServiceWorkerFetchEventOpResult;
};
} // namespace dom
} // namespace mozilla

View File

@ -0,0 +1,36 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef mozilla_dom_serviceworkeroppromise_h__
#define mozilla_dom_serviceworkeroppromise_h__
#include "mozilla/MozPromise.h"
#include "mozilla/Pair.h"
#include "mozilla/RefPtr.h"
#include "mozilla/dom/ServiceWorkerOpArgs.h"
namespace mozilla {
namespace dom {
class InternalResponse;
using SynthesizeResponseArgs =
Pair<RefPtr<InternalResponse>, FetchEventRespondWithClosure>;
using FetchEventRespondWithResult =
Variant<SynthesizeResponseArgs, ResetInterceptionArgs,
CancelInterceptionArgs>;
using FetchEventRespondWithPromise =
MozPromise<FetchEventRespondWithResult, nsresult, true>;
using ServiceWorkerOpPromise =
MozPromise<ServiceWorkerOpResult, nsresult, true>;
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_serviceworkeroppromise_h__

View File

@ -20,6 +20,7 @@ EXPORTS.mozilla.dom += [
'ServiceWorkerManager.h',
'ServiceWorkerManagerChild.h',
'ServiceWorkerManagerParent.h',
'ServiceWorkerOpPromise.h',
'ServiceWorkerRegistrar.h',
'ServiceWorkerRegistration.h',
'ServiceWorkerRegistrationDescriptor.h',
@ -80,6 +81,7 @@ IPDL_SOURCES += [
'PServiceWorkerManager.ipdl',
'PServiceWorkerRegistration.ipdl',
'PServiceWorkerUpdater.ipdl',
'ServiceWorkerOpArgs.ipdlh',
'ServiceWorkerRegistrarTypes.ipdlh',
]