diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-01-26 10:37:52 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-01-28 22:21:42 -0800 |
commit | a43b9c0a8faf9647ea0bec24727424c13dbe525f (patch) | |
tree | e82dbd07842f9558defb49343136602ea5e79c23 /components/script/dom/rtcicecandidate.rs | |
parent | be48cf23f931d92f9de3ccd1a2c21f5c6ee4cef9 (diff) | |
download | servo-a43b9c0a8faf9647ea0bec24727424c13dbe525f.tar.gz servo-a43b9c0a8faf9647ea0bec24727424c13dbe525f.zip |
Fill in RTCIceCandidate
Diffstat (limited to 'components/script/dom/rtcicecandidate.rs')
-rw-r--r-- | components/script/dom/rtcicecandidate.rs | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/components/script/dom/rtcicecandidate.rs b/components/script/dom/rtcicecandidate.rs index 89a525294c2..6c157844dbd 100644 --- a/components/script/dom/rtcicecandidate.rs +++ b/components/script/dom/rtcicecandidate.rs @@ -2,12 +2,13 @@ * 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 crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding; +use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::{self, RTCIceCandidateMethods}; use crate::dom::bindings::codegen::Bindings::RTCIceCandidateBinding::RTCIceCandidateInit; -use crate::dom::bindings::error::Fallible; +use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::reflector::reflect_dom_object; use crate::dom::bindings::reflector::{DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::window::Window; use dom_struct::dom_struct; @@ -15,18 +16,25 @@ use dom_struct::dom_struct; #[dom_struct] pub struct RTCIceCandidate { reflector: Reflector, + candidate: DOMString, + sdp_m_id: Option<DOMString>, + sdp_m_line_index: Option<u16>, + username_fragment: Option<DOMString>, } impl RTCIceCandidate { - pub fn new_inherited() -> RTCIceCandidate { + pub fn new_inherited(candidate: DOMString, sdp_m_id: Option<DOMString>, + sdp_m_line_index: Option<u16>, username_fragment: Option<DOMString>) -> RTCIceCandidate { RTCIceCandidate { reflector: Reflector::new(), + candidate, sdp_m_id, sdp_m_line_index, username_fragment } } - pub fn new(global: &GlobalScope) -> DomRoot<RTCIceCandidate> { + pub fn new(global: &GlobalScope, candidate: DOMString, sdp_m_id: Option<DOMString>, + sdp_m_line_index: Option<u16>, username_fragment: Option<DOMString>) -> DomRoot<RTCIceCandidate> { reflect_dom_object( - Box::new(RTCIceCandidate::new_inherited()), + Box::new(RTCIceCandidate::new_inherited(candidate, sdp_m_id, sdp_m_line_index, username_fragment)), global, RTCIceCandidateBinding::Wrap, ) @@ -34,8 +42,36 @@ impl RTCIceCandidate { pub fn Constructor( window: &Window, - _config: &RTCIceCandidateInit, + config: &RTCIceCandidateInit, ) -> Fallible<DomRoot<RTCIceCandidate>> { - Ok(RTCIceCandidate::new(&window.global())) + if config.sdpMid.is_none() && config.sdpMLineIndex.is_none() { + return Err(Error::Type(format!("one of sdpMid and sdpMLineIndex must be set"))); + } + Ok(RTCIceCandidate::new(&window.global(), config.candidate.clone(), + config.sdpMid.clone(), config.sdpMLineIndex, + config.usernameFragment.clone())) + } +} + + +impl RTCIceCandidateMethods for RTCIceCandidate { + /// https://www.w3.org/TR/webrtc/#dom-rtcicecandidate-candidate + fn Candidate(&self) -> DOMString { + self.candidate.clone() + } + + /// https://www.w3.org/TR/webrtc/#dom-rtcicecandidate-sdpmid + fn GetSdpMid(&self) -> Option<DOMString> { + self.sdp_m_id.clone() + } + + /// https://www.w3.org/TR/webrtc/#dom-rtcicecandidate-sdpmlineindex + fn GetSdpMLineIndex(&self) -> Option<u16> { + self.sdp_m_line_index.clone() + } + + /// https://www.w3.org/TR/webrtc/#dom-rtcicecandidate-usernamefragment + fn GetUsernameFragment(&self) -> Option<DOMString> { + self.username_fragment.clone() } } |