<!DOCTYPE html>
<script src="/js-test-resources/testharness.js"></script>
<script src="/js-test-resources/testharnessreport.js"></script>
<script>
    var t = async_test('Makes sure that preloaded resources trigger onerror');
</script>
<script>
    var scriptFailed = false;
    var styleFailed = false;
    var imageFailed = false;
    var fontFailed = false;
    var trackFailed = false;
    var gibrishFailed = false;
    var fetchFailed = false;
    var noTypeFailed = false;
    var counter = 0;
    function count() {
        ++window.counter;
    };
</script>
<link rel=preload href="../non-existent/dummy.js" as=script onerror="count();scriptFailed = true;" onload="count();">
<link rel=preload href="../non-existent/dummy.css" as=style onerror="count();styleFailed = true;" onload="count();">
<link rel=preload href="../non-existent/square.png" as=image onerror="count();imageFailed = true;" onload="count();">
<link rel=preload href="../non-existent/Ahem.ttf" as=font crossorigin onerror="count();fontFailed = true;" onload="count();">
<link rel=preload href="../non-existent/security/captions.vtt" as=track onerror="count();trackFailed = true;" onload="count();">
<link rel=preload href="../non-existent/dummy.xml" as=foobarxmlthing onerror="count();gibrishFailed = true;" onload="count();">
<link rel=preload href="http://127.0.0.1:9999/non-existent/dummy.xml?fetch" as=fetch onerror="count();fetchFailed = true;" onload="count();">
<link rel=preload href="http://127.0.0.1:9999/non-existent/dummy.xml" onerror="count();noTypeFailed = true;" onload="count();">
<script>
    document.write('<script src="../non-existent/dummy.js"></scr' + 'ipt>' +
                   '<link rel=stylesheet href="../non-existent/dummy.css">' +
                   '<img src="../non-existent/square.png">' +
                   '<video><source src="test.mp4">' +
                   '<track kind=subtitles src="../../non-existent/security/captions.vtt" srclang=en>' +
                   '</video>' +
                   '<style>' +
                   '    @font-face { font-family:ahem; src: url(../../non-existent/Ahem.ttf); }' +
                   '    span { font-family: ahem, Arial; }' +
                   '</style>' +
                   '<span>This test makes sure that link preload triggers error events for non-existing resources.</span>');
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "../non-existent/dummy.xml");
    xhr.send();
    var xhr2 = new XMLHttpRequest();
    xhr2.open("GET", "http://127.0.0.1:9999/non-existent/dummy.xml");
    xhr2.send();
    function test() {
        assert_true(styleFailed);
        assert_true(scriptFailed);
        assert_true(imageFailed);
        assert_true(fontFailed);
        assert_true(trackFailed);
        assert_false(gibrishFailed);
        assert_true(fetchFailed);
        assert_false(noTypeFailed);
        t.done();
    };
    setInterval(t.step_func(function() {
        if (window.counter >= 6)
            test();
    }, 100));
</script>

