Bug 1550519 - Show a translucent parent highlight when a subgrid is highlighted....
[gecko.git] / dom / base / MessageManagerGlobal.h
blobf53a05660962ac4b0a975908c543da3a8801264e
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 {
14 namespace dom {
16 /**
17 * Base class for implementing the WebIDL MessageManagerGlobal class.
19 class MessageManagerGlobal {
20 public:
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);
27 return;
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);
36 return;
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);
44 return;
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);
53 return;
55 mMessageManager->RemoveWeakMessageListener(aMessageName, aListener, aError);
58 // MessageSender
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);
66 return;
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);
75 return nullptr;
77 return mMessageManager->GetProcessMessageManager(aError);
80 void GetRemoteType(nsAString& aRemoteType, mozilla::ErrorResult& aError) {
81 if (!mMessageManager) {
82 aError.Throw(NS_ERROR_NULL_POINTER);
83 return;
85 mMessageManager->GetRemoteType(aRemoteType, aError);
88 // SyncMessageSender
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);
95 return;
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);
106 return;
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);
120 void MarkForCC() {
121 if (mMessageManager) {
122 mMessageManager->MarkForCC();
126 protected:
127 explicit MessageManagerGlobal(nsFrameMessageManager* aMessageManager)
128 : mMessageManager(aMessageManager) {}
130 RefPtr<nsFrameMessageManager> mMessageManager;
133 } // namespace dom
134 } // namespace mozilla
136 #endif // mozilla_dom_MessageManagerGlobal_h