tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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