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
--- 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",