<!DOCTYPE HTML> <html> <head> <script type="application/javascript" src="pc.js"></script> </head> <body> <pre id="test"> <script type="application/javascript"> createHTML({ bug: "1017888", title: "Renegotiation: add second audio stream, no bundle" }); runNetworkTest(function (options = {}) { options.bundle = false; const test = new PeerConnectionTest(options); addRenegotiation(test.chain, [ function PC_LOCAL_ADD_SECOND_STREAM(test) { test.setMediaConstraints([{audio: true}, {audio: true}], [{audio: true}]); // Since this is a NoBundle variant, adding a track will cause us to // go back to checking. test.pcLocal.expectIceChecking(); return test.pcLocal.getAllUserMediaAndAddStreams([{audio: true}]); }, function PC_REMOTE_EXPECT_ICE_CHECKING(test) { test.pcRemote.expectIceChecking(); }, ], [ function PC_REMOTE_CHECK_ADDED_TRACK(test) { // We test both tracks to avoid an ordering problem is(test.pcRemote._pc.getReceivers().length, 2, "pcRemote should have two receivers"); return Promise.all(test.pcRemote._pc.getReceivers().map(r => { const analyser = new AudioStreamAnalyser( new AudioContext(), new MediaStream([r.track])); const freq = analyser.binIndexForFrequency(TEST_AUDIO_FREQ); return analyser.waitForAnalysisSuccess(arr => arr[freq] > 200); })); }, ] ); // TODO(bug 1093835): figure out how to verify if media flows through the new stream test.setMediaConstraints([{audio: true}], [{audio: true}]); return test.run(); }); </script> </pre> </body> </html>