tor-browser

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

RTCSctpTransport.cpp (1844B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "RTCSctpTransport.h"
      6 
      7 #include "mozilla/dom/Event.h"
      8 #include "mozilla/dom/EventBinding.h"
      9 #include "mozilla/dom/RTCSctpTransportBinding.h"
     10 
     11 namespace mozilla::dom {
     12 
     13 NS_IMPL_CYCLE_COLLECTION_INHERITED(RTCSctpTransport, DOMEventTargetHelper,
     14                                   mDtlsTransport)
     15 
     16 NS_IMPL_ADDREF_INHERITED(RTCSctpTransport, DOMEventTargetHelper)
     17 NS_IMPL_RELEASE_INHERITED(RTCSctpTransport, DOMEventTargetHelper)
     18 
     19 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(RTCSctpTransport)
     20  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
     21 NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
     22 
     23 RTCSctpTransport::RTCSctpTransport(nsPIDOMWindowInner* aWindow,
     24                                   RTCDtlsTransport& aDtlsTransport,
     25                                   double aMaxMessageSize,
     26                                   const Nullable<uint16_t>& aMaxChannels)
     27    : DOMEventTargetHelper(aWindow),
     28      mState(RTCSctpTransportState::Connecting),
     29      mDtlsTransport(&aDtlsTransport),
     30      mMaxMessageSize(aMaxMessageSize),
     31      mMaxChannels(aMaxChannels) {}
     32 
     33 JSObject* RTCSctpTransport::WrapObject(JSContext* aCx,
     34                                       JS::Handle<JSObject*> aGivenProto) {
     35  return RTCSctpTransport_Binding::Wrap(aCx, this, aGivenProto);
     36 }
     37 
     38 void RTCSctpTransport::UpdateState(RTCSctpTransportState aState) {
     39  if (mState == RTCSctpTransportState::Closed || mState == aState) {
     40    return;
     41  }
     42 
     43  mState = aState;
     44 
     45  EventInit init;
     46  init.mBubbles = false;
     47  init.mCancelable = false;
     48 
     49  RefPtr<Event> event = Event::Constructor(this, u"statechange"_ns, init);
     50 
     51  DispatchTrustedEvent(event);
     52 }
     53 
     54 }  // namespace mozilla::dom