| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("Test that plug-in doesn't get a new browser object instance each time") |
| |
| function gc() |
| { |
| if (window.GCController) |
| return GCController.collect(); |
| |
| for (var i = 0; i < 10000; i++) { // > force garbage collection (FF requires about 9K allocations before a collect) |
| var s = new String("abc"); |
| } |
| } |
| |
| embed = document.createElement("embed"); |
| embed.type = "application/x-webkit-test-netscape"; |
| document.body.appendChild(embed); |
| |
| var obj = new XMLHttpRequest; |
| obj.foo = "bar"; |
| embed.remember(obj); |
| obj = null; |
| gc(); |
| shouldBe("embed.getAndForgetRememberedObject().foo", "'bar'"); |
| gc(); |
| |
| obj = new XMLHttpRequest; |
| shouldBe("embed.refCount(obj)", "1"); |
| shouldBe("embed.refCount(obj)", "1"); |
| embed.remember(obj); |
| shouldBe("embed.refCount(obj)", "2"); |
| shouldBe("embed.getRememberedObject()", "obj"); |
| shouldBe("embed.getRememberedObject()", "obj"); |
| shouldBe("embed.refCount(obj)", "2"); |
| shouldBe("embed.getAndForgetRememberedObject()", "obj"); |
| shouldBe("embed.refCount(obj)", "1"); |
| obj = null; |
| gc(); |
| |
| var successfullyParsed = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |