Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <script> | 7 <script> |
| 8 description("Test adding and removing tracks."); | 8 description("Test adding and removing tracks."); |
| 9 | 9 |
| 10 var stream1; | 10 var stream1; |
| 11 var stream2; | 11 var stream2; |
| 12 var stream3; | |
| 12 var audioTrack; | 13 var audioTrack; |
| 13 var videoTrack; | 14 var videoTrack; |
| 14 | 15 |
| 15 function error() { | 16 function error() { |
| 16 testFailed('Stream generation failed.'); | 17 testFailed('Stream generation failed.'); |
| 17 finishJSTest(); | 18 finishJSTest(); |
| 18 } | 19 } |
| 19 | 20 |
| 20 function getUserMedia(dictionary, callback) { | 21 function getUserMedia(dictionary, callback) { |
| 21 try { | 22 try { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 41 } catch (exception) { | 42 } catch (exception) { |
| 42 testFailed("removeTrack threw an exception."); | 43 testFailed("removeTrack threw an exception."); |
| 43 finishJSTest(); | 44 finishJSTest(); |
| 44 } | 45 } |
| 45 } | 46 } |
| 46 | 47 |
| 47 function shouldNotFire() { | 48 function shouldNotFire() { |
| 48 testFailed("\"addtrack\" or \"removetrack\" events should not fire as a resu lt of local addTrack() or removeTrack() operations."); | 49 testFailed("\"addtrack\" or \"removetrack\" events should not fire as a resu lt of local addTrack() or removeTrack() operations."); |
| 49 } | 50 } |
| 50 | 51 |
| 52 function onStreamActive() { | |
| 53 testPassed('Stream1 active.'); | |
| 54 } | |
| 55 | |
| 56 function onStreamInactive() { | |
| 57 testPassed('Stream1 inactive.'); | |
| 58 setTimeout(finishJSTest, 0); | |
| 59 } | |
| 60 | |
| 61 function gotStream3(s) { | |
| 62 stream3 = s; | |
| 63 stream1.onactive = onStreamActive; | |
| 64 stream1.oninactive = onStreamInactive; | |
| 65 tryAddTrack(stream1, stream3.getAudioTracks()[0]); | |
| 66 tryRemoveTrack(stream1, stream3.getAudioTracks()[0]); | |
| 67 } | |
| 68 | |
| 51 function gotStream2(s) { | 69 function gotStream2(s) { |
| 52 stream2 = s; | 70 stream2 = s; |
| 53 | 71 |
| 54 shouldBe('stream1.getAudioTracks().length', '1'); | 72 shouldBe('stream1.getAudioTracks().length', '1'); |
| 55 shouldBe('stream1.getVideoTracks().length', '1'); | 73 shouldBe('stream1.getVideoTracks().length', '1'); |
| 56 shouldBe('stream1.getTracks().length', '2'); | 74 shouldBe('stream1.getTracks().length', '2'); |
| 57 | 75 |
| 58 shouldBe('stream2.getAudioTracks().length', '1'); | 76 shouldBe('stream2.getAudioTracks().length', '1'); |
| 59 shouldBe('stream2.getVideoTracks().length', '1'); | 77 shouldBe('stream2.getVideoTracks().length', '1'); |
| 60 shouldBe('stream2.getTracks().length', '2'); | 78 shouldBe('stream2.getTracks().length', '2'); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 | 127 |
| 110 // add new tracks (from stream2) | 128 // add new tracks (from stream2) |
| 111 tryAddTrack(stream1, stream2.getAudioTracks()[0]); | 129 tryAddTrack(stream1, stream2.getAudioTracks()[0]); |
| 112 tryAddTrack(stream1, stream2.getVideoTracks()[0]); | 130 tryAddTrack(stream1, stream2.getVideoTracks()[0]); |
| 113 | 131 |
| 114 // verify added tracks | 132 // verify added tracks |
| 115 shouldBe('stream1.getAudioTracks().length', '2'); | 133 shouldBe('stream1.getAudioTracks().length', '2'); |
| 116 shouldBe('stream1.getVideoTracks().length', '2'); | 134 shouldBe('stream1.getVideoTracks().length', '2'); |
| 117 shouldBe('stream1.getTracks().length', '4'); | 135 shouldBe('stream1.getTracks().length', '4'); |
| 118 | 136 |
| 119 // when all tracks have been removed, stream.ended should return true. | 137 // when all tracks have been removed, stream.active should return false. |
| 120 tryRemoveTrack(stream2, stream2.getAudioTracks()[0]); | 138 tryRemoveTrack(stream2, stream2.getAudioTracks()[0]); |
| 121 tryRemoveTrack(stream2, stream2.getVideoTracks()[0]); | 139 tryRemoveTrack(stream2, stream2.getVideoTracks()[0]); |
| 122 shouldBeTrue('stream2.ended'); | 140 shouldBeFalse('stream2.active'); |
| 123 | 141 |
| 124 stream1.stop(); | 142 for (var i = 0; i < stream1.getAudioTracks().length; i++) |
| 125 | 143 stream1.getAudioTracks()[i].stop(); |
| 126 shouldThrow('stream1.addTrack(audioTrack)'); | 144 for (var i = 0; i < stream1.getVideoTracks().length; i++) |
| 127 shouldThrow('stream1.removeTrack(audioTrack)'); | 145 stream1.getVideoTracks()[i].stop(); |
| 128 | 146 getUserMedia({audio:true, video:true}, gotStream3); |
|
perkj_chrome
2015/01/13 08:24:31
shouldBeFalse('stream1.active') ?
jiajia.qin
2015/01/13 10:42:30
Done.
| |
| 129 setTimeout(finishJSTest, 0); | |
| 130 } | 147 } |
| 131 | 148 |
| 132 function gotStream1(s) { | 149 function gotStream1(s) { |
| 133 stream1 = s; | 150 stream1 = s; |
| 134 getUserMedia({audio:true, video:true}, gotStream2); | 151 getUserMedia({audio:true, video:true}, gotStream2); |
| 135 } | 152 } |
| 136 | 153 |
| 137 getUserMedia({audio:true, video:true}, gotStream1); | 154 getUserMedia({audio:true, video:true}, gotStream1); |
| 138 | 155 |
| 139 window.jsTestIsAsync = true; | 156 window.jsTestIsAsync = true; |
| 140 window.successfullyParsed = true; | 157 window.successfullyParsed = true; |
| 141 </script> | 158 </script> |
| 142 </body> | 159 </body> |
| 143 </html> | 160 </html> |
| OLD | NEW |