| Index: LayoutTests/fast/mediarecorder/MediaRecorder-creation.html | 
| diff --git a/LayoutTests/fast/mediarecorder/MediaRecorder-creation.html b/LayoutTests/fast/mediarecorder/MediaRecorder-creation.html | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..f6e32d45869b669d624276c5f57bb03cf8cded81 | 
| --- /dev/null | 
| +++ b/LayoutTests/fast/mediarecorder/MediaRecorder-creation.html | 
| @@ -0,0 +1,59 @@ | 
| +<!DOCTYPE html> | 
| +<script src=../../resources/testharness.js></script> | 
| +<script src=../../resources/testharnessreport.js></script> | 
| +<script> | 
| +// This test verifies that MediaRecorder can be created with different Media | 
| +// Stream Track combinations: 1 Video Track only, 1 Audio Track only and finally | 
| +// a Media Stream with both a Video and an Audio Track. Note that recording is | 
| +// _not_ started in this test, see MediaRecorder-basic-video.html for it. | 
| + | 
| +function makeAsyncTest(constraints, verifyStream, message) { | 
| +    return async_test(function(test) { | 
| + | 
| +        var gotStream = test.step_func(function(stream) { | 
| +            verifyStream(stream); | 
| + | 
| +            try { | 
| +                recorder = new MediaRecorder(stream); | 
| +            } catch (e) { | 
| +                assert_unreached('Exception while creating MediaRecorder: ' + e); | 
| +            } | 
| +            assert_equals(recorder.state, "inactive"); | 
| +            test.done(); | 
| +        }); | 
| + | 
| +        var onError = test.step_func(function() { | 
| +            assert_unreached('Error creating MediaRecorder.'); | 
| +        }); | 
| + | 
| +        try { | 
| +            navigator.webkitGetUserMedia(constraints, gotStream, onError); | 
| +        } catch(e) { | 
| +            assert_unreached('Exception launching getUserMedia(): ' + e); | 
| +        } | 
| +    }, message); | 
| +} | 
| + | 
| +function verifyVideoOnlyStream(stream) { | 
| +    assert_equals(stream.getAudioTracks().length, 0); | 
| +    assert_equals(stream.getVideoTracks().length, 1); | 
| +    assert_equals(stream.getVideoTracks()[0].readyState, 'live'); | 
| +} | 
| +function verifyAudioOnlyStream(stream) { | 
| +    assert_equals(stream.getAudioTracks().length, 1); | 
| +    assert_equals(stream.getVideoTracks().length, 0); | 
| +    assert_equals(stream.getAudioTracks()[0].readyState, 'live'); | 
| +} | 
| +function verifyAudioVideoStream(stream) { | 
| +    assert_equals(stream.getAudioTracks().length, 1); | 
| +    assert_equals(stream.getVideoTracks().length, 1); | 
| +    assert_equals(stream.getVideoTracks()[0].readyState, 'live'); | 
| +    assert_equals(stream.getAudioTracks()[0].readyState, 'live'); | 
| +} | 
| + | 
| +// Note: webkitGetUserMedia() must be called with at least video or audio true. | 
| +makeAsyncTest({video:true}, verifyVideoOnlyStream, 'Video only MediaRecorder'); | 
| +makeAsyncTest({audio:true}, verifyAudioOnlyStream, 'Audio only MediaRecorder'); | 
| +makeAsyncTest({audio:true, video:true}, verifyAudioVideoStream, 'Video and Audio MediaRecorder'); | 
| + | 
| +</script> | 
|  |