Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html

Issue 827673002: Add MediaStream.active attribute (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Allow addTrack/removeTrack when mediastream.ended is true Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698