Bug 1208390 - Implement MediaStream.getTrackById(). r?jib, r?smaug
MozReview-Commit-ID: 5a90ZOx7eUE
--- a/dom/media/DOMMediaStream.cpp
+++ b/dom/media/DOMMediaStream.cpp
@@ -706,30 +706,30 @@ DOMMediaStream::CloneInternal(TrackForwa
&tracksToBlock);
}
}
return newStream.forget();
}
MediaStreamTrack*
-DOMMediaStream::GetTrackById(const nsString& aId)
+DOMMediaStream::GetTrackById(const nsAString& aId)
{
for (const RefPtr<TrackPort>& info : mTracks) {
nsString id;
info->GetTrack()->GetId(id);
if (id == aId) {
return info->GetTrack();
}
}
return nullptr;
}
MediaStreamTrack*
-DOMMediaStream::GetOwnedTrackById(const nsString& aId)
+DOMMediaStream::GetOwnedTrackById(const nsAString& aId)
{
for (const RefPtr<TrackPort>& info : mOwnedTracks) {
nsString id;
info->GetTrack()->GetId(id);
if (id == aId) {
return info->GetTrack();
}
}
--- a/dom/media/DOMMediaStream.h
+++ b/dom/media/DOMMediaStream.h
@@ -347,16 +347,17 @@ public:
double CurrentTime();
void GetId(nsAString& aID) const;
void GetAudioTracks(nsTArray<RefPtr<AudioStreamTrack> >& aTracks) const;
void GetVideoTracks(nsTArray<RefPtr<VideoStreamTrack> >& aTracks) const;
void GetTracks(nsTArray<RefPtr<MediaStreamTrack> >& aTracks) const;
+ MediaStreamTrack* GetTrackById(const nsAString& aId);
void AddTrack(MediaStreamTrack& aTrack);
void RemoveTrack(MediaStreamTrack& aTrack);
/** Identical to CloneInternal(TrackForwardingOption::EXPLICIT) */
already_AddRefed<DOMMediaStream> Clone();
// NON-WebIDL
@@ -369,19 +370,17 @@ public:
* from the same input stream as the source DOMMediaStream (`this`).
*/
enum class TrackForwardingOption {
CURRENT,
ALL
};
already_AddRefed<DOMMediaStream> CloneInternal(TrackForwardingOption aForwarding);
- MediaStreamTrack* GetTrackById(const nsString& aId);
-
- MediaStreamTrack* GetOwnedTrackById(const nsString& aId);
+ MediaStreamTrack* GetOwnedTrackById(const nsAString& aId);
/**
* Returns true if this DOMMediaStream has aTrack in its mPlaybackStream.
*/
bool HasTrack(const MediaStreamTrack& aTrack) const;
/**
* Returns true if this DOMMediaStream owns aTrack.
--- a/dom/webidl/MediaStream.webidl
+++ b/dom/webidl/MediaStream.webidl
@@ -31,17 +31,17 @@ dictionary MediaStreamConstraints {
Constructor,
Constructor (MediaStream stream),
Constructor (sequence<MediaStreamTrack> tracks)]
interface MediaStream : EventTarget {
readonly attribute DOMString id;
sequence<AudioStreamTrack> getAudioTracks ();
sequence<VideoStreamTrack> getVideoTracks ();
sequence<MediaStreamTrack> getTracks ();
- // MediaStreamTrack? getTrackById (DOMString trackId);
+ MediaStreamTrack? getTrackById (DOMString trackId);
void addTrack (MediaStreamTrack track);
void removeTrack (MediaStreamTrack track);
MediaStream clone ();
// readonly attribute boolean active;
// attribute EventHandler onactive;
// attribute EventHandler oninactive;
// attribute EventHandler onaddtrack;
// attribute EventHandler onremovetrack;