| <html> |
| <script> |
| function stateChange() { |
| document.write(this.foo + '<br>'); |
| if (this.readyState == 4) { |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| } |
| |
| function collectGarbage() { |
| if (window.GCController) { |
| window.GCController.collect(); |
| } else { |
| for (var i = 0; i < 50000; i++) |
| new Object(); |
| } |
| } |
| |
| function runTest() { |
| document.write("Tests that garbage collection doesn't drop the XMLHttpRequest JS wrapper until the send command is done. You should see 'bar' four times below.<br>"); |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var xhr = new XMLHttpRequest(); |
| xhr.foo = 'bar'; |
| xhr.onreadystatechange = stateChange; |
| xhr.open("GET", "xmlhttprequest-gc.html", true); |
| xhr.send(null); |
| |
| xhr = null; |
| collectGarbage(); |
| } |
| |
| </script> |
| <body onload='runTest()'> |
| </body> |
| </html> |