diff --git a/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js b/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js new file mode 100644 index 00000000000000..bdb826d8fb3051 --- /dev/null +++ b/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js @@ -0,0 +1,27 @@ +test(() => { + const detached = document.createElement("div"); + const walker = document.createTreeWalker(document, 0, null); + walker.currentNode = detached; + assert_equals(walker.nextNode(), null); +}, "nextNode() returns null when currentNode is a detached element with no descendants and whatToShow does not match it"); + +test(() => { + const detached = document.createElement("div"); + detached.appendChild(document.createElement("span")); + const walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null); + walker.currentNode = detached; + assert_equals(walker.nextNode(), detached.firstChild); + assert_equals(walker.nextNode(), null); +}, "nextNode() returns null after exhausting a detached subtree"); + +test(() => { + const template = document.createElement("template"); + template.innerHTML = "text
text"; + const walker = document.createTreeWalker( + document, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT, + null); + walker.currentNode = template.content; + assert_equals(walker.nextNode(), template.content.children[0]); + assert_equals(walker.nextNode(), null); +}, "nextNode() terminates when iterating over template.content not under the walker's root");