From 70e1c29ae98f0dd4090c0093850ee07faba0dcbe Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 7 May 2019 14:33:55 -0700 Subject: [PATCH] Add MediaStream.getVideoTracks(), MediaStream.getAudioTracks() --- components/script/dom/mediastream.rs | 21 +++++++++++++++++++ .../script/dom/webidls/MediaStream.webidl | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index ed80b2c8cb1..8cf68e80490 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -10,6 +10,7 @@ use crate::dom::eventtarget::EventTarget; use crate::dom::globalscope::GlobalScope; use crate::dom::mediastreamtrack::MediaStreamTrack; use dom_struct::dom_struct; +use servo_media::streams::MediaStreamType; use std::cell::Ref; #[dom_struct] @@ -52,4 +53,24 @@ impl MediaStreamMethods for MediaStream { .map(|x| DomRoot::from_ref(&**x)) .collect() } + + /// https://w3c.github.io/mediacapture-main/#dom-mediastream-getaudiotracks + fn GetAudioTracks(&self) -> Vec> { + self.tracks + .borrow() + .iter() + .filter(|x| x.ty() == MediaStreamType::Audio) + .map(|x| DomRoot::from_ref(&**x)) + .collect() + } + + /// https://w3c.github.io/mediacapture-main/#dom-mediastream-getvideotracks + fn GetVideoTracks(&self) -> Vec> { + self.tracks + .borrow() + .iter() + .filter(|x| x.ty() == MediaStreamType::Video) + .map(|x| DomRoot::from_ref(&**x)) + .collect() + } } diff --git a/components/script/dom/webidls/MediaStream.webidl b/components/script/dom/webidls/MediaStream.webidl index 47a73fed66e..650ad1ed95d 100644 --- a/components/script/dom/webidls/MediaStream.webidl +++ b/components/script/dom/webidls/MediaStream.webidl @@ -11,8 +11,8 @@ [Exposed=Window, Pref="dom.webrtc.enabled"] interface MediaStream : EventTarget { // readonly attribute DOMString id; - // sequence getAudioTracks(); - // sequence getVideoTracks(); + sequence getAudioTracks(); + sequence getVideoTracks(); sequence getTracks(); // MediaStreamTrack? getTrackById(DOMString trackId); // void addTrack(MediaStreamTrack track);