1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 #ifndef mozilla_ipc_backgroundparentimpl_h__
8 #define mozilla_ipc_backgroundparentimpl_h__
9 
10 #include "mozilla/Attributes.h"
11 #include "mozilla/ipc/PBackgroundParent.h"
12 
13 namespace mozilla {
14 
15 namespace layout {
16 class VsyncParent;
17 }  // namespace layout
18 
19 namespace ipc {
20 
21 // Instances of this class should never be created directly. This class is meant
22 // to be inherited in BackgroundImpl.
23 class BackgroundParentImpl : public PBackgroundParent {
24  protected:
25   BackgroundParentImpl();
26   virtual ~BackgroundParentImpl();
27 
28   virtual void ActorDestroy(ActorDestroyReason aWhy) override;
29 
30   virtual PBackgroundTestParent* AllocPBackgroundTestParent(
31       const nsCString& aTestArg) override;
32 
33   virtual mozilla::ipc::IPCResult RecvPBackgroundTestConstructor(
34       PBackgroundTestParent* aActor, const nsCString& aTestArg) override;
35 
36   virtual bool DeallocPBackgroundTestParent(
37       PBackgroundTestParent* aActor) override;
38 
39   virtual PBackgroundIDBFactoryParent* AllocPBackgroundIDBFactoryParent(
40       const LoggingInfo& aLoggingInfo) override;
41 
42   virtual mozilla::ipc::IPCResult RecvPBackgroundIDBFactoryConstructor(
43       PBackgroundIDBFactoryParent* aActor,
44       const LoggingInfo& aLoggingInfo) override;
45 
46   virtual bool DeallocPBackgroundIDBFactoryParent(
47       PBackgroundIDBFactoryParent* aActor) override;
48 
49   virtual PBackgroundIndexedDBUtilsParent*
50   AllocPBackgroundIndexedDBUtilsParent() override;
51 
52   virtual bool DeallocPBackgroundIndexedDBUtilsParent(
53       PBackgroundIndexedDBUtilsParent* aActor) override;
54 
55   virtual mozilla::ipc::IPCResult RecvFlushPendingFileDeletions() override;
56 
57   virtual PBackgroundLocalStorageCacheParent*
58   AllocPBackgroundLocalStorageCacheParent(
59       const PrincipalInfo& aPrincipalInfo, const nsCString& aOriginKey,
60       const uint32_t& aPrivateBrowsingId) override;
61 
62   virtual mozilla::ipc::IPCResult RecvPBackgroundLocalStorageCacheConstructor(
63       PBackgroundLocalStorageCacheParent* aActor,
64       const PrincipalInfo& aPrincipalInfo, const nsCString& aOriginKey,
65       const uint32_t& aPrivateBrowsingId) override;
66 
67   virtual bool DeallocPBackgroundLocalStorageCacheParent(
68       PBackgroundLocalStorageCacheParent* aActor) override;
69 
70   virtual PBackgroundStorageParent* AllocPBackgroundStorageParent(
71       const nsString& aProfilePath) override;
72 
73   virtual mozilla::ipc::IPCResult RecvPBackgroundStorageConstructor(
74       PBackgroundStorageParent* aActor, const nsString& aProfilePath) override;
75 
76   virtual bool DeallocPBackgroundStorageParent(
77       PBackgroundStorageParent* aActor) override;
78 
79   virtual PPendingIPCBlobParent* AllocPPendingIPCBlobParent(
80       const IPCBlob& aBlob) override;
81 
82   virtual bool DeallocPPendingIPCBlobParent(
83       PPendingIPCBlobParent* aActor) override;
84 
85   virtual PIPCBlobInputStreamParent* AllocPIPCBlobInputStreamParent(
86       const nsID& aID, const uint64_t& aSize) override;
87 
88   virtual mozilla::ipc::IPCResult RecvPIPCBlobInputStreamConstructor(
89       PIPCBlobInputStreamParent* aActor, const nsID& aID,
90       const uint64_t& aSize) override;
91 
92   virtual bool DeallocPIPCBlobInputStreamParent(
93       PIPCBlobInputStreamParent* aActor) override;
94 
95   virtual PTemporaryIPCBlobParent* AllocPTemporaryIPCBlobParent() override;
96 
97   virtual mozilla::ipc::IPCResult RecvPTemporaryIPCBlobConstructor(
98       PTemporaryIPCBlobParent* actor) override;
99 
100   virtual bool DeallocPTemporaryIPCBlobParent(
101       PTemporaryIPCBlobParent* aActor) override;
102 
103   virtual PFileDescriptorSetParent* AllocPFileDescriptorSetParent(
104       const FileDescriptor& aFileDescriptor) override;
105 
106   virtual bool DeallocPFileDescriptorSetParent(
107       PFileDescriptorSetParent* aActor) override;
108 
109   virtual PVsyncParent* AllocPVsyncParent() override;
110 
111   virtual bool DeallocPVsyncParent(PVsyncParent* aActor) override;
112 
113   virtual PBroadcastChannelParent* AllocPBroadcastChannelParent(
114       const PrincipalInfo& aPrincipalInfo, const nsCString& aOrigin,
115       const nsString& aChannel) override;
116 
117   virtual mozilla::ipc::IPCResult RecvPBroadcastChannelConstructor(
118       PBroadcastChannelParent* actor, const PrincipalInfo& aPrincipalInfo,
119       const nsCString& origin, const nsString& channel) override;
120 
121   virtual bool DeallocPBroadcastChannelParent(
122       PBroadcastChannelParent* aActor) override;
123 
124   virtual PChildToParentStreamParent* AllocPChildToParentStreamParent()
125       override;
126 
127   virtual bool DeallocPChildToParentStreamParent(
128       PChildToParentStreamParent* aActor) override;
129 
130   virtual PParentToChildStreamParent* AllocPParentToChildStreamParent()
131       override;
132 
133   virtual bool DeallocPParentToChildStreamParent(
134       PParentToChildStreamParent* aActor) override;
135 
136   virtual PServiceWorkerManagerParent* AllocPServiceWorkerManagerParent()
137       override;
138 
139   virtual bool DeallocPServiceWorkerManagerParent(
140       PServiceWorkerManagerParent* aActor) override;
141 
142   virtual PCamerasParent* AllocPCamerasParent() override;
143 
144   virtual bool DeallocPCamerasParent(PCamerasParent* aActor) override;
145 
146   virtual mozilla::ipc::IPCResult RecvShutdownServiceWorkerRegistrar() override;
147 
148   virtual dom::cache::PCacheStorageParent* AllocPCacheStorageParent(
149       const dom::cache::Namespace& aNamespace,
150       const PrincipalInfo& aPrincipalInfo) override;
151 
152   virtual bool DeallocPCacheStorageParent(
153       dom::cache::PCacheStorageParent* aActor) override;
154 
155   virtual dom::cache::PCacheParent* AllocPCacheParent() override;
156 
157   virtual bool DeallocPCacheParent(dom::cache::PCacheParent* aActor) override;
158 
159   virtual dom::cache::PCacheStreamControlParent*
160   AllocPCacheStreamControlParent() override;
161 
162   virtual bool DeallocPCacheStreamControlParent(
163       dom::cache::PCacheStreamControlParent* aActor) override;
164 
165   virtual PUDPSocketParent* AllocPUDPSocketParent(
166       const OptionalPrincipalInfo& pInfo, const nsCString& aFilter) override;
167   virtual mozilla::ipc::IPCResult RecvPUDPSocketConstructor(
168       PUDPSocketParent*, const OptionalPrincipalInfo& aPrincipalInfo,
169       const nsCString& aFilter) override;
170   virtual bool DeallocPUDPSocketParent(PUDPSocketParent*) override;
171 
172   virtual PMessagePortParent* AllocPMessagePortParent(
173       const nsID& aUUID, const nsID& aDestinationUUID,
174       const uint32_t& aSequenceID) override;
175 
176   virtual mozilla::ipc::IPCResult RecvPMessagePortConstructor(
177       PMessagePortParent* aActor, const nsID& aUUID,
178       const nsID& aDestinationUUID, const uint32_t& aSequenceID) override;
179 
180   virtual bool DeallocPMessagePortParent(PMessagePortParent* aActor) override;
181 
182   virtual mozilla::ipc::IPCResult RecvMessagePortForceClose(
183       const nsID& aUUID, const nsID& aDestinationUUID,
184       const uint32_t& aSequenceID) override;
185 
186   virtual PAsmJSCacheEntryParent* AllocPAsmJSCacheEntryParent(
187       const dom::asmjscache::OpenMode& aOpenMode,
188       const dom::asmjscache::WriteParams& aWriteParams,
189       const PrincipalInfo& aPrincipalInfo) override;
190 
191   virtual bool DeallocPAsmJSCacheEntryParent(
192       PAsmJSCacheEntryParent* aActor) override;
193 
194   virtual PQuotaParent* AllocPQuotaParent() override;
195 
196   virtual bool DeallocPQuotaParent(PQuotaParent* aActor) override;
197 
198   virtual PFileSystemRequestParent* AllocPFileSystemRequestParent(
199       const FileSystemParams&) override;
200 
201   virtual mozilla::ipc::IPCResult RecvPFileSystemRequestConstructor(
202       PFileSystemRequestParent* actor, const FileSystemParams& params) override;
203 
204   virtual bool DeallocPFileSystemRequestParent(
205       PFileSystemRequestParent*) override;
206 
207   // Gamepad API Background IPC
208   virtual PGamepadEventChannelParent* AllocPGamepadEventChannelParent()
209       override;
210 
211   virtual bool DeallocPGamepadEventChannelParent(
212       PGamepadEventChannelParent* aActor) override;
213 
214   virtual PGamepadTestChannelParent* AllocPGamepadTestChannelParent() override;
215 
216   virtual bool DeallocPGamepadTestChannelParent(
217       PGamepadTestChannelParent* aActor) override;
218 
219   virtual PWebAuthnTransactionParent* AllocPWebAuthnTransactionParent()
220       override;
221 
222   virtual bool DeallocPWebAuthnTransactionParent(
223       PWebAuthnTransactionParent* aActor) override;
224 
225   virtual PHttpBackgroundChannelParent* AllocPHttpBackgroundChannelParent(
226       const uint64_t& aChannelId) override;
227 
228   virtual mozilla::ipc::IPCResult RecvPHttpBackgroundChannelConstructor(
229       PHttpBackgroundChannelParent* aActor,
230       const uint64_t& aChannelId) override;
231   virtual bool DeallocPHttpBackgroundChannelParent(
232       PHttpBackgroundChannelParent* aActor) override;
233 
234   virtual PClientManagerParent* AllocPClientManagerParent() override;
235 
236   virtual bool DeallocPClientManagerParent(
237       PClientManagerParent* aActor) override;
238 
239   virtual mozilla::ipc::IPCResult RecvPClientManagerConstructor(
240       PClientManagerParent* aActor) override;
241 
242   virtual PMIDIPortParent* AllocPMIDIPortParent(
243       const MIDIPortInfo& aPortInfo, const bool& aSysexEnabled) override;
244 
245   virtual bool DeallocPMIDIPortParent(PMIDIPortParent* aActor) override;
246 
247   virtual PMIDIManagerParent* AllocPMIDIManagerParent() override;
248 
249   virtual bool DeallocPMIDIManagerParent(PMIDIManagerParent* aActor) override;
250 };
251 
252 }  // namespace ipc
253 }  // namespace mozilla
254 
255 #endif  // mozilla_ipc_backgroundparentimpl_h__
256