script/dom/webrtc/
rtcrtpsender.rs1use std::rc::Rc;
6
7use dom_struct::dom_struct;
8use script_bindings::reflector::{Reflector, reflect_dom_object};
9
10use crate::dom::bindings::codegen::Bindings::RTCRtpSenderBinding::{
11 RTCRtcpParameters, RTCRtpParameters, RTCRtpSendParameters, RTCRtpSenderMethods,
12};
13use crate::dom::bindings::reflector::DomGlobal;
14use crate::dom::bindings::root::DomRoot;
15use crate::dom::bindings::str::DOMString;
16use crate::dom::globalscope::GlobalScope;
17use crate::dom::promise::Promise;
18use crate::script_runtime::CanGc;
19
20#[dom_struct]
21pub(crate) struct RTCRtpSender {
22 reflector_: Reflector,
23}
24
25impl RTCRtpSender {
26 fn new_inherited() -> Self {
27 Self {
28 reflector_: Reflector::new(),
29 }
30 }
31
32 pub(crate) fn new(global: &GlobalScope, can_gc: CanGc) -> DomRoot<Self> {
33 reflect_dom_object(Box::new(Self::new_inherited()), global, can_gc)
34 }
35}
36
37impl RTCRtpSenderMethods<crate::DomTypeHolder> for RTCRtpSender {
38 fn GetParameters(&self) -> RTCRtpSendParameters {
40 RTCRtpSendParameters {
41 parent: RTCRtpParameters {
42 headerExtensions: vec![],
43 rtcp: RTCRtcpParameters {
44 cname: None,
45 reducedSize: None,
46 },
47 codecs: vec![],
48 },
49 transactionId: DOMString::new(),
50 encodings: vec![],
51 }
52 }
53
54 fn SetParameters(&self, _parameters: &RTCRtpSendParameters, can_gc: CanGc) -> Rc<Promise> {
56 let promise = Promise::new(&self.global(), can_gc);
57 promise.resolve_native(&(), can_gc);
58 promise
59 }
60}