Bug 1271669 - Remove wallpaper constraints to the MediaStream argument to RTCPeerConnection.addTrack(). r?jib draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 19 May 2016 15:32:56 +0200
changeset 369109 fa136139f3e4943a160ec297ba453cafa4860df5
parent 369108 8dd6d585a96df1db0cb485d72e84ec7dd24ad90d
child 369110 3e6ac1e58c03625155562f7c45fe22fe51623d0e
push id18740
push userpehrsons@gmail.com
push dateFri, 20 May 2016 08:44:08 +0000
reviewersjib
bugs1271669
milestone49.0a1
Bug 1271669 - Remove wallpaper constraints to the MediaStream argument to RTCPeerConnection.addTrack(). r?jib This change RTCPeerConnection.addTrack() to allow any MediaStream as argument. The MediaStream is in the end used as an identifier of how the tracks will be grouped together on the receiving side of the peer connection. MozReview-Commit-ID: 9wDPOmMHYDc
dom/media/PeerConnection.js
media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
--- a/dom/media/PeerConnection.js
+++ b/dom/media/PeerConnection.js
@@ -1039,34 +1039,24 @@ RTCPeerConnection.prototype = {
     throw new this._win.DOMException("getStreamById not yet implemented",
                                      "NotSupportedError");
   },
 
   addTrack: function(track, stream) {
     if (stream.currentTime === undefined) {
       throw new this._win.DOMException("invalid stream.", "InvalidParameterError");
     }
-    if (stream.getTracks().indexOf(track) < 0) {
-      throw new this._win.DOMException("track is not in stream.",
-                                       "InvalidParameterError");
-    }
     this._checkClosed();
     this._senders.forEach(sender => {
       if (sender.track == track) {
         throw new this._win.DOMException("already added.",
                                          "InvalidParameterError");
       }
     });
-    try {
-      this._impl.addTrack(track, stream);
-    } catch (e if (e.result == Cr.NS_ERROR_NOT_IMPLEMENTED)) {
-      throw new this._win.DOMException(
-          "track in constructed stream not yet supported (see Bug 1259236).",
-          "NotSupportedError");
-    }
+    this._impl.addTrack(track, stream);
     let sender = this._win.RTCRtpSender._create(this._win,
                                                 new RTCRtpSender(this, track,
                                                                  stream));
     this._senders.push(sender);
     return sender;
   },
 
   removeTrack: function(sender) {
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
@@ -2259,25 +2259,16 @@ PeerConnectionImpl::AddTrack(MediaStream
 
   return AddTrack(aTrack, aStreams[0]);
 }
 
 nsresult
 PeerConnectionImpl::AddTrack(MediaStreamTrack& aTrack,
                              DOMMediaStream& aMediaStream)
 {
-  if (!aMediaStream.HasTrack(aTrack)) {
-    CSFLogError(logTag, "%s: Track is not in stream", __FUNCTION__);
-    return NS_ERROR_FAILURE;
-  }
-  if (!aMediaStream.OwnsTrack(aTrack)) {
-    CSFLogError(logTag, "%s: Track is not in owned stream (Bug 1259236)", __FUNCTION__);
-    return NS_ERROR_NOT_IMPLEMENTED;
-  }
-
   std::string streamId = PeerConnectionImpl::GetStreamId(aMediaStream);
   std::string trackId = PeerConnectionImpl::GetTrackId(aTrack);
   nsresult res = mMedia->AddTrack(aMediaStream, streamId, aTrack, trackId);
   if (NS_FAILED(res)) {
     return res;
   }
 
   CSFLogDebug(logTag, "Added track (%s) to stream %s",