| <!DOCTYPE html> | |
| <html> | |
| <!-- | |
| Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js | |
| --> | |
| <head> | |
| <title>TreeWalker: currentNode</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="traversal-support.js"></script> | |
| <link rel="stylesheet" href="/resources/testharness.css"> | |
| <div id=log></div> | |
| </head> | |
| <body> | |
| <div id='parent'> | |
| <div id='subTree'><p>Lorem ipsum <span>dolor <b>sit</b> amet</span>, consectetur <i>adipisicing</i> elit, sed do eiusmod <tt>tempor <b><i>incididunt ut</i> labore</b> et dolore magna</tt> aliqua.</p></div> | |
| </div> | |
| <p>Test TreeWalker currentNode functionality</p> | |
| <script> | |
| // var subTree = document.createElement('div'); | |
| // subTree.innerHTML = "<p>Lorem ipsum <span>dolor <b>sit</b> amet</span>, consectetur <i>adipisicing</i> elit, sed do eiusmod <tt>tempor <b><i>incididunt ut</i> labore</b> et dolore magna</tt> aliqua.</p>" | |
| // document.body.appendChild(subTree); | |
| var subTree = document.getElementById("subTree"); | |
| var all = function(node) { return true; } | |
| test(function() | |
| { | |
| var w = document.createTreeWalker(subTree, NodeFilter.SHOW_ELEMENT, all); | |
| assert_node(w.currentNode, { type: Element, id: 'subTree' }); | |
| assert_equals(w.parentNode(), null); | |
| assert_node(w.currentNode, { type: Element, id: 'subTree' }); | |
| }, "Test that TreeWalker.parent() doesn't set the currentNode to a node not under the root."); | |
| test(function() | |
| { | |
| var w = document.createTreeWalker(subTree, | |
| NodeFilter.SHOW_ELEMENT | |
| | NodeFilter.SHOW_COMMENT, | |
| all); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.parentNode(), null); | |
| assert_equals(w.currentNode, document.documentElement); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.nextNode(), document.documentElement.firstChild); | |
| assert_equals(w.currentNode, document.documentElement.firstChild); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.previousNode(), null); | |
| assert_equals(w.currentNode, document.documentElement); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.firstChild(), document.documentElement.firstChild); | |
| assert_equals(w.currentNode, document.documentElement.firstChild); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.lastChild(), document.documentElement.lastChild); | |
| assert_equals(w.currentNode, document.documentElement.lastChild); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.nextSibling(), null); | |
| assert_equals(w.currentNode, document.documentElement); | |
| w.currentNode = document.documentElement; | |
| assert_equals(w.previousSibling(), null); | |
| assert_equals(w.currentNode, document.documentElement); | |
| }, "Test that we handle setting the currentNode to arbitrary nodes not under the root element."); | |
| test(function() | |
| { | |
| var w = document.createTreeWalker(subTree, NodeFilter.SHOW_ELEMENT, all); | |
| w.currentNode = subTree.previousSibling; | |
| assert_equals(w.nextNode(), subTree); | |
| w.currentNode = document.getElementById("parent"); | |
| assert_equals(w.firstChild(), subTree); | |
| }, "Test how we handle the case when the traversed to node is within the root, but the currentElement is not."); | |
| </script> | |
| </body> | |
| </html> |