<html>
<head>
<script src="../../resources/js-test.js"></script>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

var filter = { acceptNode: function(node) { return true; } };
var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, null);
var walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null);

// test that garbage collecting a node iterator or a tree walker without a
// filter doesn't crash.
gc();

// test that iterator keeps its filter alive
iterator = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, filter);
filter = null;
shouldBeUndefined("iterator.filter.foo");
iterator.filter.foo = 42;
shouldBeEqualToNumber("iterator.filter.foo", 42);
gc();
shouldBeEqualToNumber("iterator.filter.foo", 42);

// test that walker keeps its filter alive
filter = { acceptNode: function(node) { return true; } };
walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, filter);
shouldBeUndefined("walker.filter.foo");
filter = null;
walker.filter.foo = 42;
shouldBeEqualToNumber("walker.filter.foo", 42);
gc();
shouldBeEqualToNumber("walker.filter.foo", 42);

</script>
</head>
<body>
</body>
</html>
