gecko-dev/ipc/glue/BackgroundChildImpl.h

250 строки
7.5 KiB
C++

/* -*- 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 IDBFileHandle;
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 PBackgroundStorageChild*
AllocPBackgroundStorageChild(const nsString& aProfilePath) override;
virtual bool
DeallocPBackgroundStorageChild(PBackgroundStorageChild* aActor) override;
virtual PPendingIPCBlobChild*
AllocPPendingIPCBlobChild(const IPCBlob& aBlob) override;
virtual bool
DeallocPPendingIPCBlobChild(PPendingIPCBlobChild* aActor) override;
virtual PIPCBlobInputStreamChild*
AllocPIPCBlobInputStreamChild(const nsID& aID,
const uint64_t& aSize) override;
virtual bool
DeallocPIPCBlobInputStreamChild(PIPCBlobInputStreamChild* 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 PChildToParentStreamChild*
AllocPChildToParentStreamChild() override;
virtual bool
DeallocPChildToParentStreamChild(PChildToParentStreamChild* aActor) override;
virtual PParentToChildStreamChild*
AllocPParentToChildStreamChild() override;
virtual bool
DeallocPParentToChildStreamChild(PParentToChildStreamChild* 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;
#ifdef EARLY_BETA_OR_EARLIER
virtual void
OnChannelReceivedMessage(const Message& aMsg) override;
#endif
virtual PWebAuthnTransactionChild*
AllocPWebAuthnTransactionChild() override;
virtual bool
DeallocPWebAuthnTransactionChild(PWebAuthnTransactionChild* aActor) override;
virtual PHttpBackgroundChannelChild*
AllocPHttpBackgroundChannelChild(const uint64_t& aChannelId) override;
virtual bool
DeallocPHttpBackgroundChannelChild(PHttpBackgroundChannelChild* aActor) override;
virtual mozilla::ipc::IPCResult
RecvDispatchLocalStorageChange(const nsString& aDocumentURI,
const nsString& aKey,
const nsString& aOldValue,
const nsString& aNewValue,
const PrincipalInfo& aPrincipalInfo,
const bool& aIsPrivate) override;
bool
GetMessageSchedulerGroups(const Message& aMsg, nsTArray<RefPtr<SchedulerGroup>>& aGroups) override;
};
class BackgroundChildImpl::ThreadLocal final
{
friend class nsAutoPtr<ThreadLocal>;
public:
nsAutoPtr<mozilla::dom::indexedDB::ThreadLocal> mIndexedDBThreadLocal;
mozilla::dom::IDBFileHandle* mCurrentFileHandle;
public:
ThreadLocal();
private:
// Only destroyed by nsAutoPtr<ThreadLocal>.
~ThreadLocal();
};
} // namespace ipc
} // namespace mozilla
#endif // mozilla_ipc_backgroundchildimpl_h__