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 "nsFrameMessageManager.h" 11 #include "mozilla/ErrorResult.h" 12 13 namespace mozilla { 14 namespace dom { 15 16 /** 17 * Base class for implementing the WebIDL MessageManagerGlobal class. 18 */ 19 class MessageManagerGlobal { 20 public: 21 // MessageListenerManager AddMessageListener(const nsAString & aMessageName,MessageListener & aListener,bool aListenWhenClosed,ErrorResult & aError)22 void AddMessageListener(const nsAString& aMessageName, 23 MessageListener& aListener, bool aListenWhenClosed, 24 ErrorResult& aError) { 25 if (!mMessageManager) { 26 aError.Throw(NS_ERROR_NOT_INITIALIZED); 27 return; 28 } 29 mMessageManager->AddMessageListener(aMessageName, aListener, 30 aListenWhenClosed, aError); 31 } RemoveMessageListener(const nsAString & aMessageName,MessageListener & aListener,ErrorResult & aError)32 void RemoveMessageListener(const nsAString& aMessageName, 33 MessageListener& aListener, ErrorResult& aError) { 34 if (!mMessageManager) { 35 aError.Throw(NS_ERROR_NOT_INITIALIZED); 36 return; 37 } 38 mMessageManager->RemoveMessageListener(aMessageName, aListener, aError); 39 } AddWeakMessageListener(const nsAString & aMessageName,MessageListener & aListener,ErrorResult & aError)40 void AddWeakMessageListener(const nsAString& aMessageName, 41 MessageListener& aListener, ErrorResult& aError) { 42 if (!mMessageManager) { 43 aError.Throw(NS_ERROR_NOT_INITIALIZED); 44 return; 45 } 46 mMessageManager->AddWeakMessageListener(aMessageName, aListener, aError); 47 } RemoveWeakMessageListener(const nsAString & aMessageName,MessageListener & aListener,ErrorResult & aError)48 void RemoveWeakMessageListener(const nsAString& aMessageName, 49 MessageListener& aListener, 50 ErrorResult& aError) { 51 if (!mMessageManager) { 52 aError.Throw(NS_ERROR_NOT_INITIALIZED); 53 return; 54 } 55 mMessageManager->RemoveWeakMessageListener(aMessageName, aListener, aError); 56 } 57 58 // MessageSender SendAsyncMessage(JSContext * aCx,const nsAString & aMessageName,JS::Handle<JS::Value> aObj,JS::Handle<JS::Value> aTransfers,ErrorResult & aError)59 void SendAsyncMessage(JSContext* aCx, const nsAString& aMessageName, 60 JS::Handle<JS::Value> aObj, 61 JS::Handle<JS::Value> aTransfers, ErrorResult& aError) { 62 if (!mMessageManager) { 63 aError.Throw(NS_ERROR_NOT_INITIALIZED); 64 return; 65 } 66 mMessageManager->SendAsyncMessage(aCx, aMessageName, aObj, aTransfers, 67 aError); 68 } GetProcessMessageManager(mozilla::ErrorResult & aError)69 already_AddRefed<ProcessMessageManager> GetProcessMessageManager( 70 mozilla::ErrorResult& aError) { 71 if (!mMessageManager) { 72 aError.Throw(NS_ERROR_NOT_INITIALIZED); 73 return nullptr; 74 } 75 return mMessageManager->GetProcessMessageManager(aError); 76 } 77 GetRemoteType(nsACString & aRemoteType,mozilla::ErrorResult & aError)78 void GetRemoteType(nsACString& aRemoteType, mozilla::ErrorResult& aError) { 79 if (!mMessageManager) { 80 aError.Throw(NS_ERROR_NOT_INITIALIZED); 81 return; 82 } 83 mMessageManager->GetRemoteType(aRemoteType, aError); 84 } 85 86 // SyncMessageSender SendSyncMessage(JSContext * aCx,const nsAString & aMessageName,JS::Handle<JS::Value> aObj,nsTArray<JS::Value> & aResult,ErrorResult & aError)87 void SendSyncMessage(JSContext* aCx, const nsAString& aMessageName, 88 JS::Handle<JS::Value> aObj, nsTArray<JS::Value>& aResult, 89 ErrorResult& aError) { 90 if (!mMessageManager) { 91 aError.Throw(NS_ERROR_NOT_INITIALIZED); 92 return; 93 } 94 mMessageManager->SendSyncMessage(aCx, aMessageName, aObj, aResult, aError); 95 } 96 97 // MessageManagerGlobal 98 void Dump(const nsAString& aStr); 99 void Atob(const nsAString& aAsciiString, nsAString& aBase64Data, 100 ErrorResult& aError); 101 void Btoa(const nsAString& aBase64Data, nsAString& aAsciiString, 102 ErrorResult& aError); 103 MarkForCC()104 void MarkForCC() { 105 if (mMessageManager) { 106 mMessageManager->MarkForCC(); 107 } 108 } 109 110 protected: MessageManagerGlobal(nsFrameMessageManager * aMessageManager)111 explicit MessageManagerGlobal(nsFrameMessageManager* aMessageManager) 112 : mMessageManager(aMessageManager) {} 113 114 RefPtr<nsFrameMessageManager> mMessageManager; 115 }; 116 117 } // namespace dom 118 } // namespace mozilla 119 120 #endif // mozilla_dom_MessageManagerGlobal_h 121