/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use std::rc::Rc; use dom_struct::dom_struct; use crate::dom::bindings::codegen::Bindings::RTCRtpSenderBinding::{ RTCRtcpParameters, RTCRtpParameters, RTCRtpSendParameters, RTCRtpSenderMethods, }; use crate::dom::bindings::reflector::{DomGlobal, Reflector, reflect_dom_object}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::promise::Promise; use crate::script_runtime::CanGc; #[dom_struct] pub(crate) struct RTCRtpSender { reflector_: Reflector, } impl RTCRtpSender { fn new_inherited() -> Self { Self { reflector_: Reflector::new(), } } pub(crate) fn new(global: &GlobalScope, can_gc: CanGc) -> DomRoot { reflect_dom_object(Box::new(Self::new_inherited()), global, can_gc) } } impl RTCRtpSenderMethods for RTCRtpSender { // https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-getparameters fn GetParameters(&self) -> RTCRtpSendParameters { RTCRtpSendParameters { parent: RTCRtpParameters { headerExtensions: vec![], rtcp: RTCRtcpParameters { cname: None, reducedSize: None, }, codecs: vec![], }, transactionId: DOMString::new(), encodings: vec![], } } // https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-setparameters fn SetParameters(&self, _parameters: &RTCRtpSendParameters, can_gc: CanGc) -> Rc { let promise = Promise::new(&self.global(), can_gc); promise.resolve_native(&(), can_gc); promise } }