| <!DOCTYPE html> | |
| <html> | |
| <body> | |
| <!-- FIXME: Don't use Flash, it may not be installed on the machine where this test is run. | |
| It is not trivial to switch from Flash to TestNetscapePlugin, because we need to be loading | |
| a resource in this test. --> | |
| <embed id="viewer" src="resources/simple_blank.swf"></embed> | |
| <div> | |
| This test passes if it does not trip an assert in debug builds. | |
| It ensures a readystatechange event can't get dispatched until after a plugin is fully removed. | |
| </div> | |
| <script> | |
| if (window.testRunner) { | |
| testRunner.dumpAsText(); | |
| testRunner.waitUntilDone(); | |
| } | |
| document.addEventListener('readystatechange', function() { | |
| if (document.readyState == "complete") { | |
| try { | |
| document.body.appendChild(document.getElementById('viewer')); | |
| } | |
| catch (e) { | |
| alert('PASS: element could not be re-appended'); | |
| } | |
| if (window.testRunner) | |
| testRunner.notifyDone(); | |
| } | |
| }); | |
| window.addEventListener('DOMContentLoaded', function() { | |
| // This test relies on removing the embed element while it is actively loading. | |
| // There's no observable event that creates the exact right timing for that. | |
| // As of this writing, after DOMContentLoaded, then next layout is the right time. | |
| // Here we evaluate document.body.offsetLeft to trigger that layout. But really, | |
| // this is a race condition, nothing guarantees that the load starts at that moment, | |
| // and we might have to revise this test again in the future. | |
| document.body.offsetLeft; | |
| document.body.removeChild(document.getElementById('viewer')); | |
| }); | |
| </script> | |
| </body> | |
| </html> |