MessageManagerGlobal.h (4031B)
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/. */ 6 7 #ifndef mozilla_dom_MessageManagerGlobal_h 8 #define mozilla_dom_MessageManagerGlobal_h 9 10 #include "mozilla/ErrorResult.h" 11 #include "nsFrameMessageManager.h" 12 13 namespace mozilla::dom { 14 15 /** 16 * Base class for implementing the WebIDL MessageManagerGlobal class. 17 */ 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; 27 } 28 mMessageManager->AddMessageListener(aMessageName, aListener, 29 aListenWhenClosed, aError); 30 } 31 void RemoveMessageListener(const nsAString& aMessageName, 32 MessageListener& aListener, ErrorResult& aError) { 33 if (!mMessageManager) { 34 aError.Throw(NS_ERROR_NOT_INITIALIZED); 35 return; 36 } 37 mMessageManager->RemoveMessageListener(aMessageName, aListener, aError); 38 } 39 void AddWeakMessageListener(const nsAString& aMessageName, 40 MessageListener& aListener, ErrorResult& aError) { 41 if (!mMessageManager) { 42 aError.Throw(NS_ERROR_NOT_INITIALIZED); 43 return; 44 } 45 mMessageManager->AddWeakMessageListener(aMessageName, aListener, aError); 46 } 47 void RemoveWeakMessageListener(const nsAString& aMessageName, 48 MessageListener& aListener, 49 ErrorResult& aError) { 50 if (!mMessageManager) { 51 aError.Throw(NS_ERROR_NOT_INITIALIZED); 52 return; 53 } 54 mMessageManager->RemoveWeakMessageListener(aMessageName, aListener, aError); 55 } 56 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; 64 } 65 mMessageManager->SendAsyncMessage(aCx, aMessageName, aObj, aTransfers, 66 aError); 67 } 68 already_AddRefed<ProcessMessageManager> GetProcessMessageManager( 69 mozilla::ErrorResult& aError) { 70 if (!mMessageManager) { 71 aError.Throw(NS_ERROR_NOT_INITIALIZED); 72 return nullptr; 73 } 74 return mMessageManager->GetProcessMessageManager(aError); 75 } 76 77 void GetRemoteType(nsACString& aRemoteType, mozilla::ErrorResult& aError) { 78 if (!mMessageManager) { 79 aError.Throw(NS_ERROR_NOT_INITIALIZED); 80 return; 81 } 82 mMessageManager->GetRemoteType(aRemoteType, aError); 83 } 84 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; 92 } 93 mMessageManager->SendSyncMessage(aCx, aMessageName, aObj, aResult, aError); 94 } 95 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); 102 103 void MarkForCC() { 104 if (mMessageManager) { 105 mMessageManager->MarkForCC(); 106 } 107 } 108 109 protected: 110 explicit MessageManagerGlobal(nsFrameMessageManager* aMessageManager) 111 : mMessageManager(aMessageManager) {} 112 113 RefPtr<nsFrameMessageManager> mMessageManager; 114 }; 115 116 } // namespace mozilla::dom 117 118 #endif // mozilla_dom_MessageManagerGlobal_h