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
;
28 class PJavaScriptParent
;
29 class JavaScriptParent
;
37 class nsIContentParent
: public nsISupports
38 , public mozilla::dom::ipc::MessageManagerCallback
41 NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONTENTPARENT_IID
)
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(
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
,
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();
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
,
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
);
100 nsRefPtr
<nsFrameMessageManager
> mMessageManager
;
103 NS_DEFINE_STATIC_IID_ACCESSOR(nsIContentParent
, NS_ICONTENTPARENT_IID
)
106 } // namespace mozilla
108 #endif /* mozilla_dom_nsIContentParent_h */