Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!DOCTYPE html> | |
| 2 <html> | |
| 3 <head> | |
| 4 <title>RTCPeerConnection.getSenders</title> | |
| 5 <script src="../../resources/testharness.js"></script> | |
| 6 <script src="../../resources/testharnessreport.js"></script> | |
| 7 </head> | |
| 8 <body> | |
| 9 <script> | |
| 10 promise_test(function() { | |
| 11 let pc = new RTCPeerConnection(); | |
| 12 return createStreams({audio:true, video:false}, 1) | |
| 13 .then(function(streams) { | |
| 14 let stream = streams[0]; | |
| 15 let track = stream.getAudioTracks()[0]; | |
| 16 let sender = pc.addTrack(track); | |
| 17 assert_equals(sender.track, track); | |
| 18 assert_array_equals(pc.getLocalStreams(), []); | |
| 19 }); | |
| 20 }, 'addTrack() for a single track.'); | |
| 21 | |
| 22 promise_test(function() { | |
| 23 let pc = new RTCPeerConnection(); | |
| 24 return createStreams({audio:true, video:false}, 1) | |
| 25 .then(function(streams) { | |
| 26 let stream = streams[0]; | |
| 27 let track = stream.getAudioTracks()[0]; | |
| 28 let sender = pc.addTrack(track, stream); | |
|
Guido Urdaneta
2017/07/06 09:49:57
why does this test produce the same result as the
hbos_chromium
2017/07/06 12:31:37
The difference can be observed in the SDP, but thi
| |
| 29 assert_equals(sender.track, track); | |
| 30 assert_array_equals(pc.getLocalStreams(), []); | |
| 31 }); | |
| 32 }, 'addTrack() for a single track and its stream.'); | |
| 33 | |
| 34 promise_test(function() { | |
| 35 let pc = new RTCPeerConnection(); | |
| 36 return createStreams({audio:true, video:false}, 2) | |
| 37 .then(function(streams) { | |
| 38 let streamA = streams[0]; | |
| 39 let trackA = streamA.getAudioTracks()[0]; | |
| 40 let streamB = streams[1]; | |
| 41 let sender = pc.addTrack(trackA, streamB); | |
|
Guido Urdaneta
2017/07/06 09:49:57
Same here, should passing |streamB| have an observ
hbos_chromium
2017/07/06 12:31:37
Ditto.
| |
| 42 assert_equals(sender.track, trackA); | |
| 43 assert_array_equals(pc.getLocalStreams(), []); | |
| 44 }); | |
| 45 }, 'addTrack() for a single track and a different stream.'); | |
| 46 | |
| 47 promise_test(function() { | |
| 48 let pc = new RTCPeerConnection(); | |
| 49 return createStreams({audio:true, video:false}, 2) | |
| 50 .then(function(streams) { | |
| 51 let streamA = streams[0]; | |
| 52 let streamB = streams[1]; | |
| 53 let track = streamA.getAudioTracks()[0]; | |
| 54 let exception = null; | |
| 55 try { | |
| 56 pc.addTrack(track, streamA, streamB); | |
| 57 } catch (e) { | |
| 58 exception = e; | |
| 59 } | |
| 60 // The spec supports multiple streams per track but our implementation | |
|
Guido Urdaneta
2017/07/06 09:49:57
Add a TODO to fix this test with reference to the
hbos_chromium
2017/07/06 12:31:37
Done.
| |
| 61 // doesn't. | |
| 62 assert_true(exception != null); | |
| 63 assert_equals('NotSupportedError', exception.name); | |
| 64 }); | |
| 65 }, 'addTrack() for a single track and two streams throws NotSupportedError.'); | |
| 66 | |
| 67 promise_test(function() { | |
| 68 let pc = new RTCPeerConnection(); | |
| 69 return createStreams({audio:true, video:false}, 1) | |
| 70 .then(function(streams) { | |
| 71 let stream = streams[0]; | |
| 72 let track = stream.getAudioTracks()[0]; | |
| 73 let sender = pc.addTrack(track); | |
| 74 assert_equals(sender.track, track); | |
| 75 let exception = null; | |
| 76 try { | |
| 77 pc.addTrack(track); | |
| 78 } catch (e) { | |
| 79 exception = e; | |
| 80 } | |
| 81 assert_equals('InvalidAccessError', exception.name); | |
| 82 }); | |
| 83 }, 'addTrack() when already added throws InvalidAccessError.'); | |
| 84 | |
| 85 promise_test(function() { | |
| 86 let pc = new RTCPeerConnection(); | |
| 87 return createStreams({audio:true, video:false}, 1) | |
| 88 .then(function(streams) { | |
| 89 let stream = streams[0]; | |
| 90 let track = stream.getAudioTracks()[0]; | |
| 91 pc.addStream(stream); | |
| 92 let exception = null; | |
| 93 try { | |
| 94 pc.addTrack(track); | |
| 95 } catch (e) { | |
| 96 exception = e; | |
| 97 } | |
| 98 assert_true(exception != null); | |
| 99 assert_equals('InvalidAccessError', exception.name); | |
| 100 }); | |
| 101 }, 'addTrack() after addStream() throws InvalidAccessError.'); | |
| 102 | |
| 103 promise_test(function() { | |
| 104 let pc = new RTCPeerConnection(); | |
| 105 return createStreams({audio:true, video:false}, 1) | |
| 106 .then(function(streams) { | |
| 107 let stream = streams[0]; | |
| 108 let track = stream.getAudioTracks()[0]; | |
| 109 let sender = pc.addTrack(track); | |
| 110 assert_equals(sender.track, track); | |
| 111 assert_array_equals(pc.getSenders(), [ sender ]); | |
| 112 assert_array_equals(pc.getLocalStreams(), []); | |
| 113 pc.addStream(stream); | |
| 114 assert_array_equals(pc.getLocalStreams(), [ stream ]); | |
| 115 // The existing sender is reused by |addStream|. | |
| 116 assert_array_equals(pc.getSenders(), [ sender ]); | |
| 117 }); | |
| 118 }, 'addTrack() before addStream() works.'); | |
| 119 | |
| 120 /** | |
| 121 * Helper functions to tests. | |
|
Guido Urdaneta
2017/07/06 09:49:57
remove " to tests"
hbos_chromium
2017/07/06 12:31:37
Done.
| |
| 122 */ | |
| 123 | |
| 124 function createStreams(constraints, numStreams, streamsSoFar = []) { | |
| 125 if (numStreams == 0) { | |
| 126 return Promise.resolve(streamsSoFar);; | |
| 127 } | |
| 128 return navigator.mediaDevices.getUserMedia(constraints) | |
| 129 .then(function(stream) { | |
| 130 return createStreams(constraints, | |
| 131 numStreams - 1, | |
| 132 streamsSoFar.concat([stream])); | |
| 133 }); | |
| 134 } | |
| 135 </script> | |
| 136 </body> | |
| 137 </html> | |
| OLD | NEW |