aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/mediastream.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/mediastream.rs')
-rw-r--r--components/script/dom/mediastream.rs21
1 files changed, 21 insertions, 0 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<DomRoot<MediaStreamTrack>> {
+ 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<DomRoot<MediaStreamTrack>> {
+ self.tracks
+ .borrow()
+ .iter()
+ .filter(|x| x.ty() == MediaStreamType::Video)
+ .map(|x| DomRoot::from_ref(&**x))
+ .collect()
+ }
}