<!DOCTYPE html>
<html>
        <head>
                <title> adding several types of scripts through the DOM and removing some of them confuses scheduler </title>
                <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="testlib/testlib.js"></script>
                <script type="text/javascript">
                        var head = document.getElementsByTagName('head')[0];
                        function createScript(url, contents) {
                                props = {};
                                if (url) {
                                    props.src = url;
                                }
                                return testlib.addScript(contents, props, head, false);
                        }
                        var t = async_test()

                        function test() {
                                var script = createScript('data:text\/javascript,log("Script #1 ran")');
                                var script2 = createScript('','log("Script #2 ran")');
                                if(script2) {
                                    head.removeChild(script2);
                                }
                                var script3 = createScript('data:text\/javascript, log("Script #3 ran"); createScript(\'\', \'log("Script #4 ran")\')');
                                if(script3) {
                                    head.removeChild(script3);
                                }
                                setTimeout(t.step_func(function(){
                                               assert_array_equals(eventOrder, ['Script #2 ran', 'Script #1 ran', 'Script #3 ran','Script #4 ran']);
                                               t.done();
                                           }), 400);

                        };
                        onload = t.step_func(test)
                </script>
        </head>
        <body>
                <div id="log">FAILED (This TC requires JavaScript enabled)</div>
        </body>
</html*>
