Bug 1232082 - add RTCRtpReceiver for each remote track. r=jesup

--HG--
extra : transplant_source : %20%28eG%1DW%0FK%B2%9B%D1%29%00%E4%AB%F7m%95%0F%8C
This commit is contained in:
Jan-Ivar Bruaroey 2015-12-11 23:47:29 -05:00
parent 3b64896d86
commit fd16766941
2 changed files with 20 additions and 2 deletions

View File

@ -1453,12 +1453,21 @@ PeerConnectionObserver.prototype = {
},
onAddTrack: function(track) {
let pc = this._dompc;
let receiver = pc._win.RTCRtpReceiver._create(pc._win,
new RTCRtpReceiver(this,
track));
pc._receivers.push(receiver);
let ev = new this._dompc._win.MediaStreamTrackEvent("addtrack",
{ track: track });
this.dispatchEvent(ev);
},
onRemoveTrack: function(track, type) {
let i = this._dompc._receivers.findIndex(receiver => receiver.track == track);
if (i >= 0) {
this._receivers.splice(i, 1);
}
this.dispatchEvent(new this._dompc._win.MediaStreamTrackEvent("removetrack",
{ track: track }));
},
@ -1534,7 +1543,7 @@ RTCRtpSender.prototype = {
};
function RTCRtpReceiver(pc, track) {
this.pc = pc;
this._pc = pc;
this.track = track;
}
RTCRtpReceiver.prototype = {

View File

@ -19,6 +19,13 @@
.some(sn => sn.track == t))) // that's being sent over |pc|.
}
function allRemoteStreamsHaveReceiver(pc) {
return pc.getRemoteStreams()
.every(s => s.getTracks() // Every remote stream,
.some(t => pc.getReceivers() // should have some track,
.some(sn => sn.track == t))) // that's being received over |pc|.
}
function replacetest(wrapper) {
var pc = wrapper._pc;
var oldSenderCount = pc.getSenders().length;
@ -26,7 +33,9 @@
var oldTrack = sender.track;
ok(sender, "We have a sender for video");
ok(allLocalStreamsHaveSender(pc),
"Shouldn't have any streams without a corresponding sender");
"Shouldn't have any local streams without a corresponding sender");
ok(allRemoteStreamsHaveReceiver(pc),
"Shouldn't have any remote streams without a corresponding receiver");
var newTrack;
var audiotrack;