summaryrefslogtreecommitdiffstats
path: root/dom/ipc/nsIContentParent.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/ipc/nsIContentParent.h')
-rw-r--r--dom/ipc/nsIContentParent.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/dom/ipc/nsIContentParent.h b/dom/ipc/nsIContentParent.h
new file mode 100644
index 000000000..7ba015264
--- /dev/null
+++ b/dom/ipc/nsIContentParent.h
@@ -0,0 +1,145 @@
+/* -*- 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_nsIContentParent_h
+#define mozilla_dom_nsIContentParent_h
+
+#include "mozilla/Attributes.h"
+#include "mozilla/dom/ipc/IdType.h"
+#include "mozilla/ipc/ProtocolUtils.h"
+
+#include "nsFrameMessageManager.h"
+#include "nsISupports.h"
+#include "mozilla/dom/CPOWManagerGetter.h"
+
+#define NS_ICONTENTPARENT_IID \
+ { 0xeeec9ebf, 0x8ecf, 0x4e38, \
+ { 0x81, 0xda, 0xb7, 0x34, 0x13, 0x7e, 0xac, 0xf3 } }
+
+namespace IPC {
+class Principal;
+} // namespace IPC
+
+namespace mozilla {
+
+namespace jsipc {
+class PJavaScriptParent;
+class CpowEntry;
+} // namespace jsipc
+
+namespace ipc {
+class PFileDescriptorSetParent;
+class PSendStreamParent;
+}
+
+namespace dom {
+
+class Blob;
+class BlobConstructorParams;
+class BlobImpl;
+class BlobParent;
+class ContentParent;
+class ContentBridgeParent;
+class IPCTabContext;
+class PBlobParent;
+class PBrowserParent;
+
+class nsIContentParent : public nsISupports
+ , public mozilla::dom::ipc::MessageManagerCallback
+ , public CPOWManagerGetter
+ , public mozilla::ipc::IShmemAllocator
+{
+public:
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONTENTPARENT_IID)
+
+ nsIContentParent();
+
+ BlobParent* GetOrCreateActorForBlob(Blob* aBlob);
+ BlobParent* GetOrCreateActorForBlobImpl(BlobImpl* aImpl);
+
+ virtual ContentParentId ChildID() const = 0;
+ virtual bool IsForApp() const = 0;
+ virtual bool IsForBrowser() const = 0;
+
+ MOZ_MUST_USE virtual PBlobParent*
+ SendPBlobConstructor(PBlobParent* aActor,
+ const BlobConstructorParams& aParams) = 0;
+
+ MOZ_MUST_USE virtual PBrowserParent*
+ SendPBrowserConstructor(PBrowserParent* actor,
+ const TabId& aTabId,
+ const IPCTabContext& context,
+ const uint32_t& chromeFlags,
+ const ContentParentId& aCpId,
+ const bool& aIsForApp,
+ const bool& aIsForBrowser) = 0;
+
+ virtual bool IsContentParent() const { return false; }
+
+ ContentParent* AsContentParent();
+
+ virtual bool IsContentBridgeParent() const { return false; }
+
+ ContentBridgeParent* AsContentBridgeParent();
+
+ nsFrameMessageManager* GetMessageManager() const { return mMessageManager; }
+
+ virtual int32_t Pid() const = 0;
+
+protected: // methods
+ bool CanOpenBrowser(const IPCTabContext& aContext);
+
+protected: // IPDL methods
+ virtual mozilla::jsipc::PJavaScriptParent* AllocPJavaScriptParent();
+ virtual bool DeallocPJavaScriptParent(mozilla::jsipc::PJavaScriptParent*);
+
+ virtual PBrowserParent* AllocPBrowserParent(const TabId& aTabId,
+ const IPCTabContext& aContext,
+ const uint32_t& aChromeFlags,
+ const ContentParentId& aCpId,
+ const bool& aIsForApp,
+ const bool& aIsForBrowser);
+ virtual bool DeallocPBrowserParent(PBrowserParent* frame);
+
+ virtual PBlobParent* AllocPBlobParent(const BlobConstructorParams& aParams);
+
+ virtual bool DeallocPBlobParent(PBlobParent* aActor);
+
+ virtual mozilla::ipc::PFileDescriptorSetParent*
+ AllocPFileDescriptorSetParent(const mozilla::ipc::FileDescriptor& aFD);
+
+ virtual bool
+ DeallocPFileDescriptorSetParent(mozilla::ipc::PFileDescriptorSetParent* aActor);
+
+ virtual mozilla::ipc::PSendStreamParent* AllocPSendStreamParent();
+
+ virtual bool DeallocPSendStreamParent(mozilla::ipc::PSendStreamParent* aActor);
+
+ virtual bool RecvSyncMessage(const nsString& aMsg,
+ const ClonedMessageData& aData,
+ InfallibleTArray<jsipc::CpowEntry>&& aCpows,
+ const IPC::Principal& aPrincipal,
+ nsTArray<ipc::StructuredCloneData>* aRetvals);
+ virtual bool RecvRpcMessage(const nsString& aMsg,
+ const ClonedMessageData& aData,
+ InfallibleTArray<jsipc::CpowEntry>&& aCpows,
+ const IPC::Principal& aPrincipal,
+ nsTArray<ipc::StructuredCloneData>* aRetvals);
+ virtual bool RecvAsyncMessage(const nsString& aMsg,
+ InfallibleTArray<jsipc::CpowEntry>&& aCpows,
+ const IPC::Principal& aPrincipal,
+ const ClonedMessageData& aData);
+
+protected: // members
+ RefPtr<nsFrameMessageManager> mMessageManager;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(nsIContentParent, NS_ICONTENTPARENT_IID)
+
+} // namespace dom
+} // namespace mozilla
+
+#endif /* mozilla_dom_nsIContentParent_h */