<!DOCTYPE html>
<title>Test that an invalid "src" fires an error event and changing "src" to a valid one triggers media load.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<video></video>
<script>
// 1. Test that an invalid src attribute fires an error when the file fails to load.
// 2. Test that changing src attribute triggers load after a load fails.
// 3. Test that changing src triggers load once a file is known to be valid.
async_test(function(t) {
    var mediaFile;
    var loadedCount = 0;
    var video = document.querySelector("video");

    video.onloadedmetadata = t.step_func(function() {
        var url = video.currentSrc;
        assert_equals(url.substr(url.lastIndexOf("/media/")+7), mediaFile);
        assert_false(isNaN(video.duration));

        if (++loadedCount == 2) {
            t.done();
            return;
        }

        mediaFile = "content/counting.ogv";
        video.src = mediaFile;
    });

    video.onerror = t.step_func(function() {
        assert_equals(loadedCount, 0);
        var url = video.currentSrc;
        assert_equals(url.substr(url.lastIndexOf("/media/")+7), "bogus");
        assert_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE);
        assert_equals(video.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
        mediaFile = "content/test.ogv";
        video.src = mediaFile;
    });

    mediaFile = "bogus";
    video.src = mediaFile;
});
</script>