From 96aef864725e0cc38177b28413832e83acad5d0e Mon Sep 17 00:00:00 2001 From: Perry Jiang Date: Tue, 13 Aug 2019 04:03:38 +0000 Subject: [PATCH] Bug 1231213 - Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth Differential Revision: https://phabricator.services.mozilla.com/D26167 --- .../remoteworkers/RemoteWorkerTypes.ipdlh | 22 +++++++++++++++++++ dom/workers/sharedworkers/SharedWorker.cpp | 2 +- netwerk/ipc/NeckoMessageUtils.h | 6 +++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/dom/workers/remoteworkers/RemoteWorkerTypes.ipdlh b/dom/workers/remoteworkers/RemoteWorkerTypes.ipdlh index 610e82f222f7..bacd987277c1 100644 --- a/dom/workers/remoteworkers/RemoteWorkerTypes.ipdlh +++ b/dom/workers/remoteworkers/RemoteWorkerTypes.ipdlh @@ -3,16 +3,37 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ include ClientIPCTypes; +include IPCServiceWorkerDescriptor; +include IPCServiceWorkerRegistrationDescriptor; include PBackgroundSharedTypes; include URIParams; include DOMTypes; +using struct IPC::Permission from "mozilla/net/NeckoMessageUtils.h"; using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; using mozilla::StorageAccess from "mozilla/dom/ClientIPCUtils.h"; namespace mozilla { namespace dom { +struct KeyAndPermissions { + nsCString key; + Permission[] permissions; +}; + +struct ServiceWorkerData { + KeyAndPermissions[] permissionsByKey; + IPCServiceWorkerDescriptor descriptor; + IPCServiceWorkerRegistrationDescriptor registrationDescriptor; + nsString cacheName; + uint32_t loadFlags; +}; + +union OptionalServiceWorkerData { + void_t; + ServiceWorkerData; +}; + struct RemoteWorkerData { // This should only be used for devtools. @@ -46,6 +67,7 @@ struct RemoteWorkerData StorageAccess storageAccess; bool isSharedWorker; + OptionalServiceWorkerData serviceWorkerData; }; // ErrorData/ErrorDataNote correspond to WorkerErrorReport/WorkerErrorNote diff --git a/dom/workers/sharedworkers/SharedWorker.cpp b/dom/workers/sharedworkers/SharedWorker.cpp index a95a87136905..a51098432af4 100644 --- a/dom/workers/sharedworkers/SharedWorker.cpp +++ b/dom/workers/sharedworkers/SharedWorker.cpp @@ -195,7 +195,7 @@ already_AddRefed SharedWorker::Constructor( nsString(aScriptURL), baseURL, resolvedScriptURL, name, loadingPrincipalInfo, principalInfo, storagePrincipalInfo, loadInfo.mDomain, isSecureContext, ipcClientInfo, loadInfo.mReferrerInfo, - storageAllowed, true /* sharedWorker */); + storageAllowed, void_t() /* OptionalServiceWorkerData */); PSharedWorkerChild* pActor = actorChild->SendPSharedWorkerConstructor( remoteWorkerData, loadInfo.mWindowID, portIdentifier); diff --git a/netwerk/ipc/NeckoMessageUtils.h b/netwerk/ipc/NeckoMessageUtils.h index f87b9580a12f..919363b349ab 100644 --- a/netwerk/ipc/NeckoMessageUtils.h +++ b/netwerk/ipc/NeckoMessageUtils.h @@ -37,6 +37,12 @@ struct Permission { capability(aCapability), expireType(aExpireType), expireTime(aExpireTime) {} + + bool operator==(const Permission& aOther) const { + return aOther.origin == origin && aOther.type == type && + aOther.capability == capability && aOther.expireType == expireType && + aOther.expireTime == expireTime; + } }; template <>