From 477ca175e38b232535bdad47eb71f1f2152b4da4 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 7 May 2019 14:45:48 -0700 Subject: [PATCH] Add MediaStream.addTrack() and MediaStream.removeTrack() --- components/script/dom/mediastream.rs | 15 +++++++++++++++ components/script/dom/webidls/MediaStream.webidl | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/components/script/dom/mediastream.rs b/components/script/dom/mediastream.rs index 395abd95ab6..38a9ce5f652 100644 --- a/components/script/dom/mediastream.rs +++ b/components/script/dom/mediastream.rs @@ -83,4 +83,19 @@ impl MediaStreamMethods for MediaStream { .find(|x| x.id().id().to_string() == &*id) .map(|x| DomRoot::from_ref(&**x)) } + + /// https://w3c.github.io/mediacapture-main/#dom-mediastream-addtrack + fn AddTrack(&self, track: &MediaStreamTrack) { + let existing = self.tracks.borrow().iter().find(|x| *x == &track).is_some(); + + if existing { + return; + } + self.add_track(track) + } + + /// https://w3c.github.io/mediacapture-main/#dom-mediastream-removetrack + fn RemoveTrack(&self, track: &MediaStreamTrack) { + self.tracks.borrow_mut().retain(|x| *x != track); + } } diff --git a/components/script/dom/webidls/MediaStream.webidl b/components/script/dom/webidls/MediaStream.webidl index 10b151225de..5b991f2e53a 100644 --- a/components/script/dom/webidls/MediaStream.webidl +++ b/components/script/dom/webidls/MediaStream.webidl @@ -15,8 +15,8 @@ interface MediaStream : EventTarget { sequence getVideoTracks(); sequence getTracks(); MediaStreamTrack? getTrackById(DOMString trackId); - // void addTrack(MediaStreamTrack track); - // void removeTrack(MediaStreamTrack track); + void addTrack(MediaStreamTrack track); + void removeTrack(MediaStreamTrack track); // MediaStream clone(); // readonly attribute boolean active; // attribute EventHandler onaddtrack;