Skip to content

Commit

Permalink
Add constructors for MediaStream
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth committed May 8, 2019
1 parent aca53b9 commit 60332d3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
23 changes: 23 additions & 0 deletions components/script/dom/mediastream.rs
Expand Up @@ -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;
Expand All @@ -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)
}
Expand Down
10 changes: 5 additions & 5 deletions components/script/dom/webidls/MediaStream.webidl
Expand Up @@ -4,11 +4,11 @@

// https://w3c.github.io/mediacapture-main/#dom-mediastream

// [Exposed=Window,
// Constructor,
// Constructor(MediaStream stream),
// Constructor(sequence<MediaStreamTrack> tracks)]
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window,
Constructor,
Constructor(MediaStream stream),
Constructor(sequence<MediaStreamTrack> tracks),
Pref="dom.webrtc.enabled"]
interface MediaStream : EventTarget {
// readonly attribute DOMString id;
sequence<MediaStreamTrack> getAudioTracks();
Expand Down

0 comments on commit 60332d3

Please sign in to comment.