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