787af0bbe52ff70ccde4e2424fa5989f84e8ca26
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / mediacapture-streams / MediaStream-removetrack.https.html
1 <!doctype html>
2 <html>
3 <head>
4 <title>Removing a track from a MediaStream</title>
5 <link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/>
6 <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrackList-remove-void-MediaStreamTrack-track">
7 <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#event-mediastream-removetrack">
8 </head>
9 <body>
10 <p class="instructions">When prompted, accept to share your audio stream, then your video stream.</p>
11 <h1 class="instructions">Description</h1>
12 <p class="instructions">This test checks that removinging a track from a MediaStream works as expected.</p>
13
14 <div id='log'></div>
15 <script src=/resources/testharness.js></script>
16 <script src=/resources/testharnessreport.js></script>
17 <script>
18 var t = async_test("Tests that a removal from a MediaStream works as expected", {timeout:10000});
19 t.step(function () {
20   var audio;
21   navigator.mediaDevices.getUserMedia({audio:true}).then(gotAudio);
22   function gotAudio(stream) {
23      audio = stream;
24      navigator.mediaDevices.getUserMedia({video:true}).then(gotVideo);
25   }
26
27   function gotVideo(stream) {
28     var video = stream;
29     video.onremovetrack = function () {
30        assert_unreached("onremovetrack is not triggered when removal of track is triggered by the script itself");
31     };
32     t.step(function () {
33        assert_equals(video.getVideoTracks().length, 1, "video mediastream starts with one video track");
34        video.removeTrack(video.getVideoTracks()[0]);
35        assert_equals(video.getVideoTracks().length, 0, "video mediastream has no video track left");
36        video.removeTrack(audio.getAudioTracks()[0]); // should not throw
37     });
38     t.step(function() {
39        t.done();
40    });
41   }
42 });
43 </script>
44 </body>
45 </html>