| <html> |
| <head><title>Event Listener Leak Test 1</title></head> |
| <body onload="leak()"> |
| <script> |
| if (typeof(gc) == "undefined") gc = function() {}; |
| |
| function EventListenerLeakTestObject1() {} |
| |
| function createListener(node) { |
| var foo = new EventListenerLeakTestObject1(); |
| return function(evt) { |
| // This closure references |node| and an instance of leak object. |
| node.foo = foo; |
| }; |
| } |
| |
| function doLeak() { |
| for (var i = 0; i < 10000; i++) { |
| var node = document.createElement('span'); |
| node.onclick = createListener(node); |
| } |
| } |
| |
| function leak() { |
| doLeak(); |
| gc(); |
| gc(); |
| } |
| </script> |
| |
| <p>This page leaks memory.</p> |
| |
| <!-- Allow leaking manually. --> |
| <input type="button" value="Leak More" onclick="leak()"> |
| |
| </body> |
| </html> |