getusermedia.html revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1<html>
2<head>
3  <script type="text/javascript" src="webrtc_test_utilities.js"></script>
4  <script type="text/javascript">
5  $ = function(id) {
6    return document.getElementById(id);
7  };
8  
9  var gLocalStream = null;
10    
11  setAllEventsOccuredHandler(function() {
12    gLocalStream.stop();
13    document.title = 'OK';      
14  });
15  
16  // This test that a MediaStream can be created and a local preview 
17  // rendered.
18  function getUserMedia(constraints) {
19    navigator.webkitGetUserMedia(constraints, displayAndWaitForVideo,
20        failedCallback);
21  }
22  
23  // This test that a MediaStream can be cloned and that the clone can 
24  // be rendered.
25  function getUserMediaAndClone() {
26    navigator.webkitGetUserMedia({video: true, audio: true},
27        createAndRenderClone, failedCallback);
28  }
29    
30  function failedCallback(error) {
31    document.title = 'GetUserMedia call failed with code ' + error.code;
32  }
33
34  function displayAndWaitForVideo(stream) {
35    gLocalStream = stream;
36    var localStreamUrl = webkitURL.createObjectURL(stream);
37    $('local-view').src = localStreamUrl;
38    waitForVideo('local-view');   
39  }
40  
41  function createAndRenderClone(stream) {
42    gLocalStream = stream;
43    // TODO(perkj):  --use-fake-device-for-media-stream do not currently
44    // work with audio devices and not all bots has a microphone.    
45    new_stream = new webkitMediaStream();
46    new_stream.addTrack(stream.getVideoTracks()[0]);
47    expectEquals(new_stream.getVideoTracks().length, 1);
48    if (stream.getAudioTracks().length > 0) {
49      new_stream.addTrack(stream.getAudioTracks()[0]);
50      expectEquals(new_stream.getAudioTracks().length, 1);
51      new_stream.removeTrack(new_stream.getAudioTracks()[0]);
52      expectEquals(new_stream.getAudioTracks().length, 0);
53    }
54    
55    var newStreamUrl = webkitURL.createObjectURL(new_stream);
56    $('local-view').src = newStreamUrl;  
57    waitForVideo('local-view');
58  }
59  
60  </script>  
61</head>
62<body>
63  <table border="0">
64    <tr>
65      <td>Local Preview</td>
66    </tr>
67    <tr>
68      <td><video width="320" height="240" id="local-view"
69          autoplay="autoplay"></video></td>      
70      <!-- Canvases are named after their corresponding video elements. -->
71      <td><canvas width="320" height="240" id="local-view-canvas"
72          style="display:none"></canvas></td>
73    </tr>
74  </table>
75</body>
76</html>