<!DOCTYPE html>
<html><head>
        <title> scheduler: IFRAMEs added with DOM</title>
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="testlib/testlib.js"></script>
</head>
<body>
        <div id="log">FAILED (This TC requires JavaScript enabled)</div>
        <div></div>
        <script>log('inline script #1');
                for( var i=0; i<2; i++ ){
                        var iframe=document.createElement('iframe');
                        document.getElementsByTagName('div')[1].appendChild(iframe);
                        iframe.src='pages/helloworld.html?'+i+'&'+Math.random();
                }
                log('end script #1');
        </script>

        <script type="text/javascript">
        log( 'inline script #2' );
        promise_test(() => {
          const frames = document.querySelectorAll("iframe");
          return Promise.all([
            new Promise(resolve => window.addEventListener('load', resolve)),
            new Promise(resolve => frames[0].addEventListener('load', resolve)),
            new Promise(resolve => frames[1].addEventListener('load', resolve)),
          ]).then(() => {
            assert_equals(eventOrder.length, 5);
            assert_array_equals(
                eventOrder.slice(0, 3),
                ['inline script #1', 'end script #1', 'inline script #2'],
                "inline scripts should run first");
            assert_in_array('frame/popup script 0', eventOrder.slice(3, 5), 'iframe should have loaded');
            assert_in_array('frame/popup script 1', eventOrder.slice(3, 5), 'iframe should have loaded');
          });
        }, 'iframes should load asynchronously after inline script run');
        </script>
</body></html>
