<!DOCTYPE HTML>
<title>Test that setting the srcObject attribute overrides the src attribute and if the srcObject is set to null, media is reloaded from the src attribute.</title>
<video autoplay></video>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="./w3c-media-utils.js"></script>
<script>

    async_test(test => {
        var video = document.querySelector("video");
        assert_idl_attribute(video, "srcObject");
        assert_equals(video.srcObject, null);
        video.src = getVideoURI("test");
        navigator.webkitGetUserMedia(
          {video:true},
          test.step_func(stream => {
            video.onplaying = test.step_func(playingSrcObject);
            video.srcObject = stream;
          }),
          test.unreached_func("Did not get mediastream"));

        function playingSrcObject()
        {
            assert_not_equals(video.srcObject, null);
            assert_class_string(video.srcObject, "MediaStream");
            assert_equals(video.currentSrc, "");
            video.onplaying = test.step_func_done(playingFileAfterSrcObjectRemoved);
            video.srcObject = null;
        }

        function playingFileAfterSrcObjectRemoved()
        {
            assert_equals(video.srcObject, null);
            assert_equals(video.currentSrc, video.src);
        }
    });
</script>
