/* 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 protocol PAsmJSCacheEntry; include protocol PBackgroundIDBFactory; include protocol PBackgroundIndexedDBUtils; include protocol PBackgroundSDBConnection; include protocol PBackgroundLSDatabase; include protocol PBackgroundLSObserver; include protocol PBackgroundLSRequest; include protocol PBackgroundLSSimpleRequest; include protocol PBackgroundLocalStorageCache; include protocol PBackgroundStorage; include protocol PBackgroundTest; include protocol PBroadcastChannel; include protocol PCache; include protocol PCacheStorage; include protocol PCacheStreamControl; include protocol PClientManager; include protocol PEndpointForReport; include protocol PFileDescriptorSet; include protocol PFileSystemRequest; include protocol PGamepadEventChannel; include protocol PGamepadTestChannel; include protocol PHttpBackgroundChannel; include protocol PIPCBlobInputStream; include protocol PPendingIPCBlob; include protocol PRemoteWorker; include protocol PRemoteWorkerService; include protocol PSharedWorker; include protocol PTemporaryIPCBlob; include protocol PMessagePort; include protocol PCameras; include protocol PMIDIManager; include protocol PMIDIPort; include protocol PQuota; include protocol PChildToParentStream; include protocol PParentToChildStream; include protocol PServiceWorker; include protocol PServiceWorkerContainer; include protocol PServiceWorkerManager; include protocol PServiceWorkerRegistration; include protocol PWebAuthnTransaction; include protocol PUDPSocket; include protocol PVsync; include DOMTypes; include IPCBlob; include IPCServiceWorkerDescriptor; include IPCServiceWorkerRegistrationDescriptor; include PBackgroundLSSharedTypes; include PBackgroundSharedTypes; include PBackgroundIDBSharedTypes; include PFileSystemParams; include ProtocolTypes; include RemoteWorkerTypes; include MIDITypes; include "mozilla/dom/cache/IPCUtils.h"; include "mozilla/layers/LayersMessageUtils.h"; using mozilla::dom::cache::Namespace from "mozilla/dom/cache/Types.h"; using mozilla::dom::asmjscache::OpenMode from "mozilla/dom/asmjscache/AsmJSCache.h"; using mozilla::dom::asmjscache::WriteParams from "mozilla/dom/asmjscache/AsmJSCache.h"; namespace mozilla { namespace ipc { sync protocol PBackground { manages PAsmJSCacheEntry; manages PBackgroundIDBFactory; manages PBackgroundIndexedDBUtils; manages PBackgroundSDBConnection; manages PBackgroundLSDatabase; manages PBackgroundLSObserver; manages PBackgroundLSRequest; manages PBackgroundLSSimpleRequest; manages PBackgroundLocalStorageCache; manages PBackgroundStorage; manages PBackgroundTest; manages PBroadcastChannel; manages PCache; manages PCacheStorage; manages PCacheStreamControl; manages PClientManager; manages PEndpointForReport; manages PFileDescriptorSet; manages PFileSystemRequest; manages PGamepadEventChannel; manages PGamepadTestChannel; manages PHttpBackgroundChannel; manages PIPCBlobInputStream; manages PPendingIPCBlob; manages PRemoteWorker; manages PRemoteWorkerService; manages PSharedWorker; manages PTemporaryIPCBlob; manages PMessagePort; manages PCameras; manages PMIDIManager; manages PMIDIPort; manages PQuota; manages PChildToParentStream; manages PParentToChildStream; manages PServiceWorker; manages PServiceWorkerContainer; manages PServiceWorkerManager; manages PServiceWorkerRegistration; manages PWebAuthnTransaction; manages PUDPSocket; manages PVsync; parent: // Only called at startup during mochitests to check the basic infrastructure. async PBackgroundTest(nsCString testArg); async PBackgroundIDBFactory(LoggingInfo loggingInfo); async PBackgroundIndexedDBUtils(); // Use only for testing! async FlushPendingFileDeletions(); async PBackgroundSDBConnection(PrincipalInfo principalInfo); async PBackgroundLSDatabase(PrincipalInfo principalInfo, uint32_t privateBrowsingId, uint64_t datastoreId); async PBackgroundLSObserver(uint64_t observerId); /** * Issue an asynchronous request that will be used in a synchronous fashion * through complex machinations described in `PBackgroundLSRequest.ipdl` and * `LSObject.h`. */ async PBackgroundLSRequest(LSRequestParams params); /** * Issues a simple, non-cancelable asynchronous request that's used in an * asynchronous fashion by callers. (LSRequest is not simple because it used * in a synchronous fashion which leads to complexities regarding cancelation, * see `PBackgroundLSRequest.ipdl` for details.) */ async PBackgroundLSSimpleRequest(LSSimpleRequestParams params); /** * Asynchronously propagates the "last-pb-context-exited" observer * notification to LocalStorage NextGen implementation so it can clear * retained private-browsing in-memory Datastores. Using a (same-process) * IPC message avoids the need for the main-thread nsIObserver to have a * reference to the PBackground thread and directly dispatch a runnable to it. */ async LSClearPrivateBrowsing(); async PBackgroundLocalStorageCache(PrincipalInfo principalInfo, nsCString originKey, uint32_t privateBrowsingId); async PBackgroundStorage(nsString profilePath); async PVsync(); async PCameras(); async PUDPSocket(PrincipalInfo? pInfo, nsCString filter); async PBroadcastChannel(PrincipalInfo pInfo, nsCString origin, nsString channel); async PServiceWorkerManager(); async ShutdownServiceWorkerRegistrar(); async PCacheStorage(Namespace aNamespace, PrincipalInfo aPrincipalInfo); async PMessagePort(nsID uuid, nsID destinationUuid, uint32_t sequenceId); async PChildToParentStream(); async MessagePortForceClose(nsID uuid, nsID destinationUuid, uint32_t sequenceId); async PAsmJSCacheEntry(OpenMode openMode, WriteParams write, PrincipalInfo principalInfo); async PQuota(); async PFileSystemRequest(FileSystemParams params); async PGamepadEventChannel(); async PGamepadTestChannel(); async PHttpBackgroundChannel(uint64_t channelId); async PWebAuthnTransaction(); async PSharedWorker(RemoteWorkerData data, uint64_t windowID, MessagePortIdentifier portIdentifier); async PTemporaryIPCBlob(); async PClientManager(); async PMIDIManager(); async PMIDIPort(MIDIPortInfo portInfo, bool sysexEnabled); // This method is used to propagate storage activities from the child actor // to the parent actor. See StorageActivityService. async StorageActivity(PrincipalInfo principalInfo); async PServiceWorker(IPCServiceWorkerDescriptor aDescriptor); async PRemoteWorkerService(); async PServiceWorkerContainer(); async PServiceWorkerRegistration(IPCServiceWorkerRegistrationDescriptor aDescriptor); async PEndpointForReport(nsString aGroupName, PrincipalInfo aPrincipalInfo); async RemoveEndpoint(nsString aGroupName, nsCString aEndpointURL, PrincipalInfo aPrincipalInfo); child: async PCache(); async PCacheStreamControl(); async PParentToChildStream(); async PPendingIPCBlob(IPCBlob blob); async PRemoteWorker(RemoteWorkerData data); both: // PIPCBlobInputStream is created on the parent side only if the child starts // a migration. async PIPCBlobInputStream(nsID aID, uint64_t aSize); async PFileDescriptorSet(FileDescriptor fd); }; } // namespace ipc } // namespace mozilla