Skip to content

Commit

Permalink
Add {MediaStream, MediaStreamTrack}.clone()
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth committed May 8, 2019
1 parent 477ca17 commit 229ce36
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
11 changes: 10 additions & 1 deletion components/script/dom/mediastream.rs
Expand Up @@ -4,7 +4,7 @@

use crate::dom::bindings::cell::DomRefCell;
use crate::dom::bindings::codegen::Bindings::MediaStreamBinding::{self, MediaStreamMethods};
use crate::dom::bindings::reflector::reflect_dom_object;
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;
Expand Down Expand Up @@ -98,4 +98,13 @@ impl MediaStreamMethods for MediaStream {
fn RemoveTrack(&self, track: &MediaStreamTrack) {
self.tracks.borrow_mut().retain(|x| *x != track);
}

/// https://w3c.github.io/mediacapture-main/#dom-mediastream-clone
fn Clone(&self) -> DomRoot<MediaStream> {
let new = MediaStream::new(&self.global());
for track in &*self.tracks.borrow() {
new.add_track(&track)
}
new
}
}
7 changes: 6 additions & 1 deletion components/script/dom/mediastreamtrack.rs
Expand Up @@ -5,7 +5,7 @@
use crate::dom::bindings::codegen::Bindings::MediaStreamTrackBinding::{
self, MediaStreamTrackMethods,
};
use crate::dom::bindings::reflector::reflect_dom_object;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::str::DOMString;
use crate::dom::eventtarget::EventTarget;
Expand Down Expand Up @@ -66,4 +66,9 @@ impl MediaStreamTrackMethods for MediaStreamTrack {
fn Id(&self) -> DOMString {
self.id.id().to_string().into()
}

/// https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-clone
fn Clone(&self) -> DomRoot<MediaStreamTrack> {
MediaStreamTrack::new(&self.global(), self.id, self.ty)
}
}
2 changes: 1 addition & 1 deletion components/script/dom/webidls/MediaStream.webidl
Expand Up @@ -17,7 +17,7 @@ interface MediaStream : EventTarget {
MediaStreamTrack? getTrackById(DOMString trackId);
void addTrack(MediaStreamTrack track);
void removeTrack(MediaStreamTrack track);
// MediaStream clone();
MediaStream clone();
// readonly attribute boolean active;
// attribute EventHandler onaddtrack;
// attribute EventHandler onremovetrack;
Expand Down
2 changes: 1 addition & 1 deletion components/script/dom/webidls/MediaStreamTrack.webidl
Expand Up @@ -15,7 +15,7 @@ interface MediaStreamTrack : EventTarget {
// attribute EventHandler onunmute;
// readonly attribute MediaStreamTrackState readyState;
// attribute EventHandler onended;
// MediaStreamTrack clone();
MediaStreamTrack clone();
// void stop();
// MediaTrackCapabilities getCapabilities();
// MediaTrackConstraints getConstraints();
Expand Down

0 comments on commit 229ce36

Please sign in to comment.