| <!DOCTYPE HTML> |
| <html> |
| <!-- |
| Test adapted from http://mxr.mozilla.org/mozilla-central/source/content/base/test/test_bug559526.html |
| |
| https://bugzilla.mozilla.org/show_bug.cgi?id=559526 |
| --> |
| <head> |
| <title>Test for Bug 559526</title> |
| </head> |
| <body> |
| <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=559526">Mozilla Bug 559526</a> |
| <p id="display"></p> |
| <div id="content" style="display: none"> |
| |
| </div> |
| <pre id="test"> |
| <div id="nodes" style="display:none"> |
| <div id="child1"></div> |
| <div id="child2"></div> |
| |
| <div id="child3"></div> |
| <div id="child4"></div> |
| <div id="child5"></div> |
| <div id="child6"></div> |
| <div id="child7"></div> |
| <div id="child8"></div> |
| </div> |
| <script type="application/javascript"> |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| /** Test for Bug 559526 **/ |
| |
| var it; |
| var recurse = false; |
| var testCount = 0; |
| function filter(node) { |
| if (node.id == "child3" && ! recurse) { |
| recurse = true; |
| var ex = null; |
| try { |
| var foo = it.nextNode(); |
| } catch(e) { |
| ex = e; |
| } |
| ++testCount; |
| console.log("Should have thrown an exception: " + ex); |
| recurse = false; |
| } |
| return NodeFilter.FILTER_ACCEPT; |
| } |
| |
| (function testNodeIterator() { |
| |
| it = document.createNodeIterator( |
| document.getElementById("nodes"), |
| NodeFilter.SHOW_ELEMENT, |
| filter, |
| false |
| ); |
| while (it.nextNode()); |
| })(); |
| |
| (function testTreeWalker() { |
| it = document.createTreeWalker( |
| document.getElementById("nodes"), |
| NodeFilter.SHOW_ELEMENT, |
| filter, |
| false |
| ); |
| while(it.nextNode()); |
| |
| it = document.createTreeWalker( |
| document.getElementById("nodes"), |
| NodeFilter.SHOW_ELEMENT, |
| filter, |
| false |
| ); |
| it.firstChild(); |
| while(it.nextSibling()); |
| |
| it = document.createTreeWalker( |
| document.getElementById("nodes"), |
| NodeFilter.SHOW_ELEMENT, |
| filter, |
| false |
| ); |
| it.lastChild(); |
| while(it.previousSibling()); |
| })(); |
| |
| console.log("Should have tests 4 filter calls: " + testCount); |
| </script> |
| </pre> |
| </body> |
| </html> |