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"
13 namespace mozilla::dom
{
16 * Base class for implementing the WebIDL MessageManagerGlobal class.
18 class MessageManagerGlobal
{
20 // MessageListenerManager
21 void AddMessageListener(const nsAString
& aMessageName
,
22 MessageListener
& aListener
, bool aListenWhenClosed
,
23 ErrorResult
& aError
) {
24 if (!mMessageManager
) {
25 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
28 mMessageManager
->AddMessageListener(aMessageName
, aListener
,
29 aListenWhenClosed
, aError
);
31 void RemoveMessageListener(const nsAString
& aMessageName
,
32 MessageListener
& aListener
, ErrorResult
& aError
) {
33 if (!mMessageManager
) {
34 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
37 mMessageManager
->RemoveMessageListener(aMessageName
, aListener
, aError
);
39 void AddWeakMessageListener(const nsAString
& aMessageName
,
40 MessageListener
& aListener
, ErrorResult
& aError
) {
41 if (!mMessageManager
) {
42 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
45 mMessageManager
->AddWeakMessageListener(aMessageName
, aListener
, aError
);
47 void RemoveWeakMessageListener(const nsAString
& aMessageName
,
48 MessageListener
& aListener
,
49 ErrorResult
& aError
) {
50 if (!mMessageManager
) {
51 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
54 mMessageManager
->RemoveWeakMessageListener(aMessageName
, aListener
, aError
);
58 void SendAsyncMessage(JSContext
* aCx
, const nsAString
& aMessageName
,
59 JS::Handle
<JS::Value
> aObj
,
60 JS::Handle
<JS::Value
> aTransfers
, ErrorResult
& aError
) {
61 if (!mMessageManager
) {
62 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
65 mMessageManager
->SendAsyncMessage(aCx
, aMessageName
, aObj
, aTransfers
,
68 already_AddRefed
<ProcessMessageManager
> GetProcessMessageManager(
69 mozilla::ErrorResult
& aError
) {
70 if (!mMessageManager
) {
71 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
74 return mMessageManager
->GetProcessMessageManager(aError
);
77 void GetRemoteType(nsACString
& aRemoteType
, mozilla::ErrorResult
& aError
) {
78 if (!mMessageManager
) {
79 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
82 mMessageManager
->GetRemoteType(aRemoteType
, aError
);
86 void SendSyncMessage(JSContext
* aCx
, const nsAString
& aMessageName
,
87 JS::Handle
<JS::Value
> aObj
, nsTArray
<JS::Value
>& aResult
,
88 ErrorResult
& aError
) {
89 if (!mMessageManager
) {
90 aError
.Throw(NS_ERROR_NOT_INITIALIZED
);
93 mMessageManager
->SendSyncMessage(aCx
, aMessageName
, aObj
, aResult
, aError
);
96 // MessageManagerGlobal
97 void Dump(const nsAString
& aStr
);
98 void Atob(const nsAString
& aAsciiString
, nsAString
& aBase64Data
,
100 void Btoa(const nsAString
& aBase64Data
, nsAString
& aAsciiString
,
101 ErrorResult
& aError
);
104 if (mMessageManager
) {
105 mMessageManager
->MarkForCC();
110 explicit MessageManagerGlobal(nsFrameMessageManager
* aMessageManager
)
111 : mMessageManager(aMessageManager
) {}
113 RefPtr
<nsFrameMessageManager
> mMessageManager
;
116 } // namespace mozilla::dom
118 #endif // mozilla_dom_MessageManagerGlobal_h