script/dom/webrtc/
rtcrtpsender.rs

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