| <!doctype html> | 
 | <html> | 
 | <head> | 
 | <title>getUserMedia({video:true}) creates a stream with a properly initialized video track</title> | 
 | <link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/> | 
 | <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-MediaStreamTrack"> | 
 | <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#life-cycle-and-media-flow"> | 
 | <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-kind"> | 
 | <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-enabled"> | 
 | <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-readyState"> | 
 | <link rel='stylesheet' href='/resources/testharness.css' media='all'/> | 
 | </head> | 
 | <body> | 
 | <p class="instructions">When prompted, accept to share your video stream.</p> | 
 | <h1 class="instructions">Description</h1> | 
 | <p class="instructions">This test checks that the video track of MediaStream | 
 | object returned by the success callback in getUserMedia is correctly initialized.</p> | 
 |  | 
 | <div id='log'></div> | 
 | <script src=/resources/testharness.js></script> | 
 | <script src=/resources/testharnessreport.js></script> | 
 | <script src=/resources/WebIDLParser.js></script> | 
 | <script src=/resources/idlharness.js></script> | 
 | <script src="/common/vendor-prefix.js" data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'></script> | 
 | <script> | 
 | var t = async_test("Tests that the video MediaStreamTrack objects are properly initialized", {timeout:10000}); | 
 | var track = null | 
 | var idl_array = new IdlArray(); | 
 | idl_array.add_idls("interface EventTarget {\ | 
 |   void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ | 
 |   void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ | 
 |   boolean dispatchEvent(Event event);\ | 
 | };"); | 
 |  | 
 | /*idl_array.add_idls("callback interface EventListener {\ | 
 |   void handleEvent(Event event);\ | 
 | };");*/ | 
 | idl_array.add_idls("interface MediaStreamTrack : EventTarget {\ | 
 |     readonly    attribute DOMString             kind;\ | 
 |     readonly    attribute DOMString             id;\ | 
 |     readonly    attribute DOMString             label;\ | 
 |                 attribute boolean               enabled;\ | 
 |     readonly    attribute boolean               muted;\ | 
 |                 attribute EventHandler          onmute;\ | 
 |                 attribute EventHandler          onunmute;\ | 
 |     readonly    attribute boolean               _readonly;\ | 
 |     readonly    attribute boolean               remote;\ | 
 |     readonly    attribute MediaStreamTrackState readyState;\ | 
 |                 attribute EventHandler          onstarted;\ | 
 |                 attribute EventHandler          onended;\ | 
 |     static sequence<SourceInfo>                    getSourceInfos ();\ | 
 |     MediaTrackConstraints?                         constraints ();\ | 
 |     MediaSourceStates                              states ();\ | 
 |     (AllVideoCapabilities or AllAudioCapabilities) capabilities ();\ | 
 |     void                                           applyConstraints (MediaTrackConstraints constraints);\ | 
 |                 attribute EventHandler          onoverconstrained;\ | 
 |     MediaStreamTrack                               clone ();\ | 
 |     void                                           stop ();\ | 
 | };"); | 
 |  | 
 | t.step(function () { | 
 |   navigator.getUserMedia({video: true}, t.step_func(function (stream) { | 
 |     var videoTracks = stream.getVideoTracks(); | 
 |     assert_equals(videoTracks.length, 1, "There is exactly one video track in the media stream"); | 
 |     track = videoTracks[0]; | 
 |     assert_equals(track.readyState, "live", "The track object is in live state"); | 
 |     assert_equals(track.kind, "video", "The track object is of video kind"); | 
 |     assert_true(track.enabled, "The track object is enabed"); // Not clear that this is required by the spec, see https://www.w3.org/Bugs/Public/show_bug.cgi?id=22212 | 
 |     idl_array.add_objects({MediaStreamTrack: ["track"]}); | 
 |     idl_array.test(); | 
 |  | 
 |     t.done(); | 
 |   }), function (error) {}); | 
 | }); | 
 | </script> | 
 | </body> | 
 | </html> |