Bug 1852740: add tests for the `fetchpriority` attribute in Link headers. r=necko...
[gecko.git] / dom / base / MessageManagerGlobal.h
blobe1262efa697a0dc5c956846dbea2a534434fd7f2
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 {
15 /**
16 * Base class for implementing the WebIDL MessageManagerGlobal class.
18 class MessageManagerGlobal {
19 public:
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);
26 return;
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);
35 return;
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);
43 return;
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);
52 return;
54 mMessageManager->RemoveWeakMessageListener(aMessageName, aListener, aError);
57 // MessageSender
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);
63 return;
65 mMessageManager->SendAsyncMessage(aCx, aMessageName, aObj, aTransfers,
66 aError);
68 already_AddRefed<ProcessMessageManager> GetProcessMessageManager(
69 mozilla::ErrorResult& aError) {
70 if (!mMessageManager) {
71 aError.Throw(NS_ERROR_NOT_INITIALIZED);
72 return nullptr;
74 return mMessageManager->GetProcessMessageManager(aError);
77 void GetRemoteType(nsACString& aRemoteType, mozilla::ErrorResult& aError) {
78 if (!mMessageManager) {
79 aError.Throw(NS_ERROR_NOT_INITIALIZED);
80 return;
82 mMessageManager->GetRemoteType(aRemoteType, aError);
85 // SyncMessageSender
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);
91 return;
93 mMessageManager->SendSyncMessage(aCx, aMessageName, aObj, aResult, aError);
96 // MessageManagerGlobal
97 void Dump(const nsAString& aStr);
98 void Atob(const nsAString& aAsciiString, nsAString& aBase64Data,
99 ErrorResult& aError);
100 void Btoa(const nsAString& aBase64Data, nsAString& aAsciiString,
101 ErrorResult& aError);
103 void MarkForCC() {
104 if (mMessageManager) {
105 mMessageManager->MarkForCC();
109 protected:
110 explicit MessageManagerGlobal(nsFrameMessageManager* aMessageManager)
111 : mMessageManager(aMessageManager) {}
113 RefPtr<nsFrameMessageManager> mMessageManager;
116 } // namespace mozilla::dom
118 #endif // mozilla_dom_MessageManagerGlobal_h