1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=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
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_MessageManagerGlobal_h
8 #define mozilla_dom_MessageManagerGlobal_h
10 #include "nsFrameMessageManager.h"
11 #include "mozilla/ErrorResult.h"
17 * Base class for implementing the WebIDL MessageManagerGlobal class.
19 class MessageManagerGlobal
{
21 // MessageListenerManager
22 void AddMessageListener(const nsAString
& aMessageName
,
23 MessageListener
& aListener
, bool aListenWhenClosed
,
24 ErrorResult
& aError
) {
25 if (!mMessageManager
) {
26 aError
.Throw(NS_ERROR_NULL_POINTER
);
29 mMessageManager
->AddMessageListener(aMessageName
, aListener
,
30 aListenWhenClosed
, aError
);
32 void RemoveMessageListener(const nsAString
& aMessageName
,
33 MessageListener
& aListener
, ErrorResult
& aError
) {
34 if (!mMessageManager
) {
35 aError
.Throw(NS_ERROR_NULL_POINTER
);
38 mMessageManager
->RemoveMessageListener(aMessageName
, aListener
, aError
);
40 void AddWeakMessageListener(const nsAString
& aMessageName
,
41 MessageListener
& aListener
, ErrorResult
& aError
) {
42 if (!mMessageManager
) {
43 aError
.Throw(NS_ERROR_NULL_POINTER
);
46 mMessageManager
->AddWeakMessageListener(aMessageName
, aListener
, aError
);
48 void RemoveWeakMessageListener(const nsAString
& aMessageName
,
49 MessageListener
& aListener
,
50 ErrorResult
& aError
) {
51 if (!mMessageManager
) {
52 aError
.Throw(NS_ERROR_NULL_POINTER
);
55 mMessageManager
->RemoveWeakMessageListener(aMessageName
, aListener
, aError
);
59 void SendAsyncMessage(JSContext
* aCx
, const nsAString
& aMessageName
,
60 JS::Handle
<JS::Value
> aObj
,
61 JS::Handle
<JSObject
*> aObjects
,
62 nsIPrincipal
* aPrincipal
,
63 JS::Handle
<JS::Value
> aTransfers
, ErrorResult
& aError
) {
64 if (!mMessageManager
) {
65 aError
.Throw(NS_ERROR_NULL_POINTER
);
68 mMessageManager
->SendAsyncMessage(aCx
, aMessageName
, aObj
, aObjects
,
69 aPrincipal
, aTransfers
, aError
);
71 already_AddRefed
<ProcessMessageManager
> GetProcessMessageManager(
72 mozilla::ErrorResult
& aError
) {
73 if (!mMessageManager
) {
74 aError
.Throw(NS_ERROR_NULL_POINTER
);
77 return mMessageManager
->GetProcessMessageManager(aError
);
80 void GetRemoteType(nsAString
& aRemoteType
, mozilla::ErrorResult
& aError
) {
81 if (!mMessageManager
) {
82 aError
.Throw(NS_ERROR_NULL_POINTER
);
85 mMessageManager
->GetRemoteType(aRemoteType
, aError
);
89 void SendSyncMessage(JSContext
* aCx
, const nsAString
& aMessageName
,
90 JS::Handle
<JS::Value
> aObj
,
91 JS::Handle
<JSObject
*> aObjects
, nsIPrincipal
* aPrincipal
,
92 nsTArray
<JS::Value
>& aResult
, ErrorResult
& aError
) {
93 if (!mMessageManager
) {
94 aError
.Throw(NS_ERROR_NULL_POINTER
);
97 mMessageManager
->SendSyncMessage(aCx
, aMessageName
, aObj
, aObjects
,
98 aPrincipal
, aResult
, aError
);
100 void SendRpcMessage(JSContext
* aCx
, const nsAString
& aMessageName
,
101 JS::Handle
<JS::Value
> aObj
,
102 JS::Handle
<JSObject
*> aObjects
, nsIPrincipal
* aPrincipal
,
103 nsTArray
<JS::Value
>& aResult
, ErrorResult
& aError
) {
104 if (!mMessageManager
) {
105 aError
.Throw(NS_ERROR_NULL_POINTER
);
108 mMessageManager
->SendRpcMessage(aCx
, aMessageName
, aObj
, aObjects
,
109 aPrincipal
, aResult
, aError
);
112 // MessageManagerGlobal
113 void Dump(const nsAString
& aStr
);
114 void PrivateNoteIntentionalCrash(ErrorResult
& aError
);
115 void Atob(const nsAString
& aAsciiString
, nsAString
& aBase64Data
,
116 ErrorResult
& aError
);
117 void Btoa(const nsAString
& aBase64Data
, nsAString
& aAsciiString
,
118 ErrorResult
& aError
);
121 if (mMessageManager
) {
122 mMessageManager
->MarkForCC();
127 explicit MessageManagerGlobal(nsFrameMessageManager
* aMessageManager
)
128 : mMessageManager(aMessageManager
) {}
130 RefPtr
<nsFrameMessageManager
> mMessageManager
;
134 } // namespace mozilla
136 #endif // mozilla_dom_MessageManagerGlobal_h