summaryrefslogtreecommitdiffstats
path: root/ipc/glue/BackgroundChildImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/glue/BackgroundChildImpl.h')
-rw-r--r--ipc/glue/BackgroundChildImpl.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/ipc/glue/BackgroundChildImpl.h b/ipc/glue/BackgroundChildImpl.h
new file mode 100644
index 000000000..f8c2a5576
--- /dev/null
+++ b/ipc/glue/BackgroundChildImpl.h
@@ -0,0 +1,202 @@
+/* -*- 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_ipc_backgroundchildimpl_h__
+#define mozilla_ipc_backgroundchildimpl_h__
+
+#include "mozilla/Attributes.h"
+#include "mozilla/ipc/PBackgroundChild.h"
+#include "nsAutoPtr.h"
+
+namespace mozilla {
+namespace dom {
+
+class FileHandleBase;
+
+namespace indexedDB {
+
+class ThreadLocal;
+
+} // namespace indexedDB
+} // namespace dom
+
+namespace ipc {
+
+// Instances of this class should never be created directly. This class is meant
+// to be inherited in BackgroundImpl.
+class BackgroundChildImpl : public PBackgroundChild
+{
+public:
+ class ThreadLocal;
+
+ // Get the ThreadLocal for the current thread if
+ // BackgroundChild::GetOrCreateForCurrentThread() has been called and true was
+ // returned (e.g. a valid PBackgroundChild actor has been created or is in the
+ // process of being created). Otherwise this function returns null.
+ // This functions is implemented in BackgroundImpl.cpp.
+ static ThreadLocal*
+ GetThreadLocalForCurrentThread();
+
+protected:
+ BackgroundChildImpl();
+ virtual ~BackgroundChildImpl();
+
+ virtual void
+ ProcessingError(Result aCode, const char* aReason) override;
+
+ virtual void
+ ActorDestroy(ActorDestroyReason aWhy) override;
+
+ virtual PBackgroundTestChild*
+ AllocPBackgroundTestChild(const nsCString& aTestArg) override;
+
+ virtual bool
+ DeallocPBackgroundTestChild(PBackgroundTestChild* aActor) override;
+
+ virtual PBackgroundIDBFactoryChild*
+ AllocPBackgroundIDBFactoryChild(const LoggingInfo& aLoggingInfo) override;
+
+ virtual bool
+ DeallocPBackgroundIDBFactoryChild(PBackgroundIDBFactoryChild* aActor)
+ override;
+
+ virtual PBackgroundIndexedDBUtilsChild*
+ AllocPBackgroundIndexedDBUtilsChild() override;
+
+ virtual bool
+ DeallocPBackgroundIndexedDBUtilsChild(PBackgroundIndexedDBUtilsChild* aActor)
+ override;
+
+ virtual PBlobChild*
+ AllocPBlobChild(const BlobConstructorParams& aParams) override;
+
+ virtual bool
+ DeallocPBlobChild(PBlobChild* aActor) override;
+
+ virtual PFileDescriptorSetChild*
+ AllocPFileDescriptorSetChild(const FileDescriptor& aFileDescriptor)
+ override;
+
+ virtual bool
+ DeallocPFileDescriptorSetChild(PFileDescriptorSetChild* aActor) override;
+
+ virtual PCamerasChild*
+ AllocPCamerasChild() override;
+
+ virtual bool
+ DeallocPCamerasChild(PCamerasChild* aActor) override;
+
+ virtual PVsyncChild*
+ AllocPVsyncChild() override;
+
+ virtual bool
+ DeallocPVsyncChild(PVsyncChild* aActor) override;
+
+ virtual PUDPSocketChild*
+ AllocPUDPSocketChild(const OptionalPrincipalInfo& aPrincipalInfo,
+ const nsCString& aFilter) override;
+ virtual bool
+ DeallocPUDPSocketChild(PUDPSocketChild* aActor) override;
+
+ virtual PBroadcastChannelChild*
+ AllocPBroadcastChannelChild(const PrincipalInfo& aPrincipalInfo,
+ const nsCString& aOrigin,
+ const nsString& aChannel) override;
+
+ virtual bool
+ DeallocPBroadcastChannelChild(PBroadcastChannelChild* aActor) override;
+
+ virtual PServiceWorkerManagerChild*
+ AllocPServiceWorkerManagerChild() override;
+
+ virtual bool
+ DeallocPServiceWorkerManagerChild(PServiceWorkerManagerChild* aActor) override;
+
+ virtual dom::cache::PCacheStorageChild*
+ AllocPCacheStorageChild(const dom::cache::Namespace& aNamespace,
+ const PrincipalInfo& aPrincipalInfo) override;
+
+ virtual bool
+ DeallocPCacheStorageChild(dom::cache::PCacheStorageChild* aActor) override;
+
+ virtual dom::cache::PCacheChild* AllocPCacheChild() override;
+
+ virtual bool
+ DeallocPCacheChild(dom::cache::PCacheChild* aActor) override;
+
+ virtual dom::cache::PCacheStreamControlChild*
+ AllocPCacheStreamControlChild() override;
+
+ virtual bool
+ DeallocPCacheStreamControlChild(dom::cache::PCacheStreamControlChild* aActor) override;
+
+ virtual PMessagePortChild*
+ AllocPMessagePortChild(const nsID& aUUID, const nsID& aDestinationUUID,
+ const uint32_t& aSequenceID) override;
+
+ virtual bool
+ DeallocPMessagePortChild(PMessagePortChild* aActor) override;
+
+ virtual PSendStreamChild*
+ AllocPSendStreamChild() override;
+
+ virtual bool
+ DeallocPSendStreamChild(PSendStreamChild* aActor) override;
+
+ virtual PAsmJSCacheEntryChild*
+ AllocPAsmJSCacheEntryChild(const dom::asmjscache::OpenMode& aOpenMode,
+ const dom::asmjscache::WriteParams& aWriteParams,
+ const PrincipalInfo& aPrincipalInfo) override;
+
+ virtual bool
+ DeallocPAsmJSCacheEntryChild(PAsmJSCacheEntryChild* aActor) override;
+
+ virtual PQuotaChild*
+ AllocPQuotaChild() override;
+
+ virtual bool
+ DeallocPQuotaChild(PQuotaChild* aActor) override;
+
+ virtual PFileSystemRequestChild*
+ AllocPFileSystemRequestChild(const FileSystemParams&) override;
+
+ virtual bool
+ DeallocPFileSystemRequestChild(PFileSystemRequestChild*) override;
+
+ // Gamepad API Background IPC
+ virtual PGamepadEventChannelChild*
+ AllocPGamepadEventChannelChild() override;
+
+ virtual bool
+ DeallocPGamepadEventChannelChild(PGamepadEventChannelChild* aActor) override;
+
+ virtual PGamepadTestChannelChild*
+ AllocPGamepadTestChannelChild() override;
+
+ virtual bool
+ DeallocPGamepadTestChannelChild(PGamepadTestChannelChild* aActor) override;
+};
+
+class BackgroundChildImpl::ThreadLocal final
+{
+ friend class nsAutoPtr<ThreadLocal>;
+
+public:
+ nsAutoPtr<mozilla::dom::indexedDB::ThreadLocal> mIndexedDBThreadLocal;
+ mozilla::dom::FileHandleBase* mCurrentFileHandle;
+
+public:
+ ThreadLocal();
+
+private:
+ // Only destroyed by nsAutoPtr<ThreadLocal>.
+ ~ThreadLocal();
+};
+
+} // namespace ipc
+} // namespace mozilla
+
+#endif // mozilla_ipc_backgroundchildimpl_h__