summaryrefslogtreecommitdiffstats
path: root/dom/ipc/ContentBridgeParent.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/ipc/ContentBridgeParent.h')
-rw-r--r--dom/ipc/ContentBridgeParent.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/dom/ipc/ContentBridgeParent.h b/dom/ipc/ContentBridgeParent.h
new file mode 100644
index 000000000..2f7c951b5
--- /dev/null
+++ b/dom/ipc/ContentBridgeParent.h
@@ -0,0 +1,154 @@
+/* -*- 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_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