123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* 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_dom_ContentBridgeParent_h
- #define mozilla_dom_ContentBridgeParent_h
- #include "mozilla/dom/PContentBridgeParent.h"
- #include "mozilla/dom/nsIContentParent.h"
- #include "mozilla/dom/ipc/IdType.h"
- #include "nsIObserver.h"
- namespace mozilla {
- namespace dom {
- class ContentBridgeParent : public PContentBridgeParent
- , public nsIContentParent
- , public nsIObserver
- {
- public:
- explicit ContentBridgeParent(Transport* aTransport);
- NS_DECL_ISUPPORTS
- NS_DECL_NSIOBSERVER
- virtual void ActorDestroy(ActorDestroyReason aWhy) override;
- void DeferredDestroy();
- virtual bool IsContentBridgeParent() const override { return true; }
- void NotifyTabDestroyed();
- static ContentBridgeParent*
- Create(Transport* aTransport, ProcessId aOtherProcess);
- virtual PBlobParent*
- SendPBlobConstructor(PBlobParent* actor,
- const BlobConstructorParams& params) override;
- virtual PBrowserParent*
- SendPBrowserConstructor(PBrowserParent* aActor,
- const TabId& aTabId,
- const IPCTabContext& aContext,
- const uint32_t& aChromeFlags,
- const ContentParentId& aCpID,
- const bool& aIsForApp,
- const bool& aIsForBrowser) override;
- FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeParent)
- jsipc::CPOWManager* GetCPOWManager() override;
- virtual ContentParentId ChildID() const override
- {
- return mChildID;
- }
- virtual bool IsForApp() const override
- {
- return mIsForApp;
- }
- virtual bool IsForBrowser() const override
- {
- return mIsForBrowser;
- }
- virtual int32_t Pid() const override
- {
- // XXX: do we need this for ContentBridgeParent?
- return -1;
- }
- protected:
- virtual ~ContentBridgeParent();
- void SetChildID(ContentParentId aId)
- {
- mChildID = aId;
- }
- void SetIsForApp(bool aIsForApp)
- {
- mIsForApp = aIsForApp;
- }
- void SetIsForBrowser(bool aIsForBrowser)
- {
- mIsForBrowser = aIsForBrowser;
- }
- void Close()
- {
- // Trick NewRunnableMethod
- PContentBridgeParent::Close();
- }
- protected:
- virtual bool
- RecvSyncMessage(const nsString& aMsg,
- const ClonedMessageData& aData,
- InfallibleTArray<jsipc::CpowEntry>&& aCpows,
- const IPC::Principal& aPrincipal,
- nsTArray<StructuredCloneData>* aRetvals) override;
- virtual bool RecvAsyncMessage(const nsString& aMsg,
- InfallibleTArray<jsipc::CpowEntry>&& aCpows,
- const IPC::Principal& aPrincipal,
- const ClonedMessageData& aData) override;
- virtual jsipc::PJavaScriptParent* AllocPJavaScriptParent() override;
- virtual bool
- DeallocPJavaScriptParent(jsipc::PJavaScriptParent*) override;
- virtual PBrowserParent*
- AllocPBrowserParent(const TabId& aTabId,
- const IPCTabContext &aContext,
- const uint32_t& aChromeFlags,
- const ContentParentId& aCpID,
- const bool& aIsForApp,
- const bool& aIsForBrowser) override;
- virtual bool DeallocPBrowserParent(PBrowserParent*) override;
- virtual PBlobParent*
- AllocPBlobParent(const BlobConstructorParams& aParams) override;
- virtual bool DeallocPBlobParent(PBlobParent*) override;
- virtual PSendStreamParent* AllocPSendStreamParent() override;
- virtual bool DeallocPSendStreamParent(PSendStreamParent* aActor) override;
- virtual PFileDescriptorSetParent*
- AllocPFileDescriptorSetParent(const mozilla::ipc::FileDescriptor&) override;
- virtual bool
- DeallocPFileDescriptorSetParent(PFileDescriptorSetParent*) override;
- DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeParent);
- protected: // members
- RefPtr<ContentBridgeParent> mSelfRef;
- Transport* mTransport; // owned
- ContentParentId mChildID;
- bool mIsForApp;
- bool mIsForBrowser;
- private:
- friend class ContentParent;
- };
- } // namespace dom
- } // namespace mozilla
- #endif // mozilla_dom_ContentBridgeParent_h
|