Bug 1208390 - Implement MediaStream.getTrackById(). r?jib, r?smaug draft
authorAndreas Pehrson <pehrsons@gmail.com>
Fri, 20 May 2016 13:01:30 +0200
changeset 369129 0894f58c6d26baf3dedb1023a447791a83ac4686
parent 369128 10bc7cfb94b6a210decc91c596bd4c7a4bfb0a64
child 521472 09f5c802bba30097ed6430b6d4c2d0e85b4de588
push id18750
push userpehrsons@gmail.com
push dateFri, 20 May 2016 11:34:31 +0000
reviewersjib, smaug
bugs1208390
milestone49.0a1
Bug 1208390 - Implement MediaStream.getTrackById(). r?jib, r?smaug MozReview-Commit-ID: 5a90ZOx7eUE
dom/media/DOMMediaStream.cpp
dom/media/DOMMediaStream.h
dom/webidl/MediaStream.webidl
--- 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;