diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-05-07 15:59:54 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-05-08 08:15:01 -0700 |
commit | b4ddf6837f53f126f4b26dea5fedc07ca826ff6f (patch) | |
tree | 8cf197cd42e2dcf89762dfc1b820e2320ec4e095 /components/script/dom/mediastream.rs | |
parent | 72701d96c4d59a07e03746842ed317632c34d253 (diff) | |
download | servo-b4ddf6837f53f126f4b26dea5fedc07ca826ff6f.tar.gz servo-b4ddf6837f53f126f4b26dea5fedc07ca826ff6f.zip |
Add constructors for MediaStream
Diffstat (limited to 'components/script/dom/mediastream.rs')
-rw-r--r-- | components/script/dom/mediastream.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index a5edb458337..2ae573b290e 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -4,12 +4,14 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::MediaStreamBinding::{self, MediaStreamMethods}; +use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::dom::mediastreamtrack::MediaStreamTrack; +use crate::dom::window::Window; use dom_struct::dom_struct; use servo_media::streams::MediaStreamType; use std::cell::Ref; @@ -36,6 +38,27 @@ impl MediaStream { ) } + pub fn Constructor(global: &Window) -> Fallible<DomRoot<MediaStream>> { + Ok(MediaStream::new(&global.global())) + } + + pub fn Constructor_(_: &Window, stream: &MediaStream) -> Fallible<DomRoot<MediaStream>> { + Ok(stream.Clone()) + } + + pub fn Constructor__( + global: &Window, + tracks: Vec<DomRoot<MediaStreamTrack>>, + ) -> Fallible<DomRoot<MediaStream>> { + let new = MediaStream::new(&global.global()); + for track in tracks { + // this is quadratic, but shouldn't matter much + // if this becomes a problem we can use a hash map + new.AddTrack(&track) + } + Ok(new) + } + pub fn get_tracks(&self) -> Ref<[Dom<MediaStreamTrack>]> { Ref::map(self.tracks.borrow(), |tracks| &**tracks) } |