Bumping manifests a=b2g-bump
[gecko.git] / dom / ipc / nsIContentParent.h
blobcee6361fb47f5501b72ac4a637194ced9a580b23
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_nsIContentParent_h
8 #define mozilla_dom_nsIContentParent_h
10 #include "mozilla/dom/ipc/Blob.h"
12 #include "nsFrameMessageManager.h"
13 #include "nsISupports.h"
15 #define NS_ICONTENTPARENT_IID \
16 { 0xeeec9ebf, 0x8ecf, 0x4e38, \
17 { 0x81, 0xda, 0xb7, 0x34, 0x13, 0x7e, 0xac, 0xf3 } }
19 class nsFrameMessageManager;
21 namespace IPC {
22 class Principal;
23 } // namespace IPC
25 namespace mozilla {
27 namespace jsipc {
28 class PJavaScriptParent;
29 class JavaScriptParent;
30 class CpowEntry;
31 } // namespace jsipc
33 namespace dom {
34 class IPCTabContext;
35 class ContentParent;
37 class nsIContentParent : public nsISupports
38 , public mozilla::dom::ipc::MessageManagerCallback
40 public:
41 NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONTENTPARENT_IID)
43 nsIContentParent();
44 BlobParent* GetOrCreateActorForBlob(nsIDOMBlob* aBlob);
46 virtual uint64_t ChildID() = 0;
47 virtual bool IsForApp() = 0;
48 virtual bool IsForBrowser() = 0;
50 virtual PBlobParent* SendPBlobConstructor(
51 PBlobParent* actor,
52 const BlobConstructorParams& params) NS_WARN_UNUSED_RESULT = 0;
54 virtual PBrowserParent* SendPBrowserConstructor(
55 PBrowserParent* actor,
56 const IPCTabContext& context,
57 const uint32_t& chromeFlags,
58 const uint64_t& aId,
59 const bool& aIsForApp,
60 const bool& aIsForBrowser) NS_WARN_UNUSED_RESULT = 0;
62 virtual jsipc::JavaScriptParent *GetCPOWManager() = 0;
64 virtual bool IsContentParent() { return false; }
65 ContentParent* AsContentParent();
67 protected: // methods
68 bool CanOpenBrowser(const IPCTabContext& aContext);
70 protected: // IPDL methods
71 virtual mozilla::jsipc::PJavaScriptParent* AllocPJavaScriptParent();
72 virtual bool DeallocPJavaScriptParent(mozilla::jsipc::PJavaScriptParent*);
74 virtual PBrowserParent* AllocPBrowserParent(const IPCTabContext& aContext,
75 const uint32_t& aChromeFlags,
76 const uint64_t& aId,
77 const bool& aIsForApp,
78 const bool& aIsForBrowser);
79 virtual bool DeallocPBrowserParent(PBrowserParent* frame);
81 virtual PBlobParent* AllocPBlobParent(const BlobConstructorParams& aParams);
82 virtual bool DeallocPBlobParent(PBlobParent*);
84 virtual bool RecvSyncMessage(const nsString& aMsg,
85 const ClonedMessageData& aData,
86 const InfallibleTArray<jsipc::CpowEntry>& aCpows,
87 const IPC::Principal& aPrincipal,
88 InfallibleTArray<nsString>* aRetvals);
89 virtual bool AnswerRpcMessage(const nsString& aMsg,
90 const ClonedMessageData& aData,
91 const InfallibleTArray<jsipc::CpowEntry>& aCpows,
92 const IPC::Principal& aPrincipal,
93 InfallibleTArray<nsString>* aRetvals);
94 virtual bool RecvAsyncMessage(const nsString& aMsg,
95 const ClonedMessageData& aData,
96 const InfallibleTArray<jsipc::CpowEntry>& aCpows,
97 const IPC::Principal& aPrincipal);
99 protected: // members
100 nsRefPtr<nsFrameMessageManager> mMessageManager;
103 NS_DEFINE_STATIC_IID_ACCESSOR(nsIContentParent, NS_ICONTENTPARENT_IID)
105 } // namespace dom
106 } // namespace mozilla
108 #endif /* mozilla_dom_nsIContentParent_h */