| Index: client/tests/client/dom/NativeGCTest.dart
|
| diff --git a/client/tests/client/dom/NativeGCTest.dart b/client/tests/client/dom/NativeGCTest.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2f9e8e869a211462a7d11c2bfc0a65f2a6d81386
|
| --- /dev/null
|
| +++ b/client/tests/client/dom/NativeGCTest.dart
|
| @@ -0,0 +1,32 @@
|
| +#library('NativeGCTest');
|
| +#import('../../../testing/unittest/unittest.dart');
|
| +#import('dart:dom');
|
| +
|
| +main() {
|
| +
|
| + test('EventListener', () {
|
| + final int N = 1000000;
|
| + final int M = 1000;
|
| +
|
| + var div;
|
| + for (int i = 0; i < M; ++i) {
|
| + // This memory should be freed when the listener below is
|
| + // collected.
|
| + List l = new List(N);
|
| +
|
| + // Record the iteration number.
|
| + l[N - 1] = i;
|
| +
|
| + div = document.createElement('div');
|
| + div.addEventListener('test', (_) {
|
| + // Only the final iteration's listener should be invoked.
|
| + // Note: the reference to l keeps the entire list alive.
|
| + Expect.equals(M - 1, l[N - 1]);
|
| + }, false);
|
| + }
|
| +
|
| + final event = document.createEvent('Event');
|
| + event.initEvent('test', true, false);
|
| + div.dispatchEvent(event);
|
| + });
|
| +}
|
|
|