Index: LayoutTests/fast/dom/NodeIterator/NodeIterator-dont-overcollect.html |
diff --git a/LayoutTests/fast/dom/NodeIterator/NodeIterator-dont-overcollect.html b/LayoutTests/fast/dom/NodeIterator/NodeIterator-dont-overcollect.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c3a1cb82aecb20f75abd700a5d5530ddb209cd1e |
--- /dev/null |
+++ b/LayoutTests/fast/dom/NodeIterator/NodeIterator-dont-overcollect.html |
@@ -0,0 +1,34 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+<script src="../../js/resources/js-test-pre.js"></script> |
+<script> |
+ var callbackWasTriggered = false; |
+ |
+ var callback = function(node) { |
+ callbackWasTriggered = true; |
+ return NodeFilter.FILTER_ACCEPT; |
+ }; |
+ var nodeIterator = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, callback, false); |
+ |
+ var callbackObservation = internals.observeGC(callback); |
+ callback = null; |
+ var nodeFilterObservation = internals.observeGC(nodeIterator.filter); |
+ var nodeIteratorObservation = internals.observeGC(nodeIterator); |
+ |
+ gc(); |
+ shouldBeFalse('nodeFilterObservation.wasCollected'); |
+ shouldBeFalse('callbackObservation.wasCollected'); |
+ |
+ nodeIterator.nextNode(); |
+ shouldBeTrue('callbackWasTriggered'); |
+ |
+ nodeIterator = null; |
+ gc(); |
+ shouldBeTrue('nodeIteratorObservation.wasCollected'); |
+ shouldBeTrue('nodeFilterObservation.wasCollected'); |
+ shouldBeTrue('callbackObservation.wasCollected'); |
+</script> |
+<script src="../../js/resources/js-test-post.js"></script> |
+</body> |
+</html> |