<!doctype html>
<html>
<head>
    <title>html-script-module-errorHandling</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <style>

        iframe
        { display: none; }

    </style>
</head>
<body>
    <h1>html-script-module-errorHandling</h1>
    <iframe id="iframe_parseError_Root" src="errorhandling-parseerror-root.html"></iframe>
    <iframe id="iframe_parseError_Dependent" src="errorhandling-parseerror-dependent.html"></iframe>
    <iframe id="iframe_parseError_DependentMultiple" src="errorhandling-parseerror-dependentmultiple.html"></iframe>
    <script>

        var tests = [
                    { "id": "iframe_parseError_Root", "expected": "error" },
                    { "id": "iframe_parseError_Dependent", "expected": "error" },
                    { "id": "iframe_parseError_DependentMultiple", "expected": "error,error" },
                ];
        tests.forEach(function (testObj) {
            var testHandle = async_test("IFrame test: '" + testObj.id + "'");
            var testTarget = document.getElementById(testObj.id);
            testTarget.addEventListener("load", testHandle.step_func(function () {
                assert_equals(testTarget.contentDocument._errorReported, testObj.expected, "Unexpected _errorReported value");
                testHandle.done();
            }));
        });

        var test_wrongMimetype_root = async_test("External root module with non-script mimetype");
        var script_wrongMimetype_root = document.createElement("script");
        script_wrongMimetype_root.type = "module";
        script_wrongMimetype_root.src = "errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain)";
        script_wrongMimetype_root.addEventListener("error", test_wrongMimetype_root.step_func(function () {
            test_wrongMimetype_root.done();
        }));
        script_wrongMimetype_root.addEventListener("load", test_wrongMimetype_root.step_func(function () {
            assert_unreached("This script should not have loaded!");
        }));
        document.body.appendChild(script_wrongMimetype_root);

        var test_wrongMimetype_import = async_test("Module with imported non-script mimetype");
        var script_wrongMimetype_import = document.createElement("script");
        script_wrongMimetype_import.type = "module";
        script_wrongMimetype_import.src = "errorhandling-wrongMimetype-import.js";
        script_wrongMimetype_import.addEventListener("error", test_wrongMimetype_import.step_func(function () {
            test_wrongMimetype_import.done();
        }));
        script_wrongMimetype_import.addEventListener("load", test_wrongMimetype_import.step_func(function () {
            assert_unreached("This script should not have loaded!");
        }));
        document.body.appendChild(script_wrongMimetype_import);
    </script>
</body>
</html>
