diff options
Diffstat (limited to 'dom/plugins/test/mochitest/test_instance_unparent2.html')
-rw-r--r-- | dom/plugins/test/mochitest/test_instance_unparent2.html | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/dom/plugins/test/mochitest/test_instance_unparent2.html b/dom/plugins/test/mochitest/test_instance_unparent2.html new file mode 100644 index 000000000..eedbca8e4 --- /dev/null +++ b/dom/plugins/test/mochitest/test_instance_unparent2.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<html> +<head> + <title>Test removing an instance's DOM node</title> + <script type="text/javascript" src="/MochiKit/packed.js"></script> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript" src="plugin-utils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body onload="startTest()"> + <script type="application/javascript;version=1.8"> + SimpleTest.waitForExplicitFinish(); + setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED); + + const MAX_ATTEMPTS = 50; + var attempts = 0; + var destroyed = false; + function onDestroy() { + destroyed = true; + } + + function checkPluginAlreadyDestroyed() { + // We may need to retry a few times until the plugin stop event makes + // its way through the event queue. + if (attempts < MAX_ATTEMPTS && !destroyed) { + ++attempts; + SimpleTest.executeSoon(checkPluginAlreadyDestroyed); + } else { + info("Number of retry attempts: " + attempts); + is(destroyed, true, "Plugin instance should have been destroyed."); + SimpleTest.finish(); + } + } + + function startTest() { + var p1 = document.getElementById('plugin1'); + var d1 = document.getElementById('div1'); + + p1.callOnDestroy(onDestroy); + + // Get two parent check events to run. + d1.removeChild(p1); + d1.appendChild(p1); + d1.removeChild(p1); + + SimpleTest.executeSoon(checkPluginAlreadyDestroyed); + } + </script> + + <p id="display"></p> + + <div id="div1"> + <embed id="plugin1" type="application/x-test" width="200" height="200"></embed> + </div> + + <div id="div2"> + <div id="div3"> + <embed id="plugin2" type="application/x-test" width="200" height="200"></embed> + </div> + </div> +</body> +</html> |