| <html> |
| <script> |
| |
| var callbackCount = 0; |
| |
| function npapiCallback(x) { |
| callbackCount++; |
| } |
| |
| function runTest() |
| { |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| var successCount = 0; |
| var plugin = document.getElementById("testPlugin"); |
| plugin.logDestroy = true; |
| |
| var testObject = plugin.testObject; |
| plugin.testPassTestObject("npapiCallback", testObject); |
| var testObject2 = testObject.testObject; |
| plugin.testPassTestObject("npapiCallback", testObject2); |
| var testObject3 = testObject2.testObject; |
| plugin.testPassTestObject("npapiCallback", testObject3); |
| |
| if (callbackCount == 3) |
| successCount++; |
| |
| plugin.parentNode.removeChild(plugin); |
| |
| try { |
| testObject.property; |
| } catch (e) { |
| if (e instanceof ReferenceError) |
| successCount++; |
| } |
| |
| try { |
| testObject.property = 'hello'; |
| } catch (e) { |
| if (e instanceof ReferenceError) |
| successCount++; |
| } |
| |
| try { |
| testObject2.property; |
| } catch (e) { |
| if (e instanceof ReferenceError) |
| successCount++; |
| } |
| |
| try { |
| testObject3.property; |
| } catch (e) { |
| if (e instanceof ReferenceError) |
| successCount++; |
| } |
| |
| if (successCount == 5) |
| document.getElementById('result').innerHTML = 'SUCCESS'; |
| } |
| |
| </script> |
| |
| <body onload="runTest();"> |
| <pre> |
| This tests that objects from plugin objects are properly cleaned up. |
| |
| Example: |
| plugin |
| ------- (Creates) ------ Object1 |
| ------- (Creates) ------ Object2 |
| |
| It is important that both Object1 and Object2 cleanup as a result of |
| cleaning up the plugin. |
| |
| <div id="result">FAILURE</div> |
| <embed id="testPlugin" type="application/x-webkit-test-netscape" width="200" height="200"></embed> |
| </body> |
| </html> |