| <!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> |