| <!DOCTYPE html> |
| <html><head> |
| <title> scheduler: event listener defined by script in a removed IFRAME</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> |
| <iframe src="about:blank"></iframe> |
| <script> |
| log('inline script #1'); |
| function fireFooEvent(){ |
| var evt=document.createEvent('Event'); |
| evt.initEvent('foo', true, true); |
| document.dispatchEvent(evt); |
| } |
| var doc=frames[0].document; |
| doc.open( 'text/html' ); |
| doc.write( '<script>top.log("IFRAME script");top.document.addEventListener("foo", function(e){ top.log("event: "+e.type); }, false)<\/script>' ); |
| log('end script #1'); |
| </script> |
| <script> |
| fireFooEvent(); |
| frames[0].frameElement.parentNode.removeChild( frames[0].frameElement ); // removing the IFRAME should de-activate document that defined event listener..? |
| </script> |
| <script> |
| fireFooEvent(); |
| </script> |
| <script type="text/javascript"> |
| log( 'inline script #2' ); |
| var t = async_test() |
| |
| function test() { |
| assert_array_equals(eventOrder, ['inline script #1', |
| 'IFRAME script', |
| 'end script #1', |
| 'event: foo', |
| 'inline script #2' |
| ]); |
| t.done(); |
| } |
| onload = t.step_func(test) |
| </script> |
| |
| </body></html> |