TreeWalker-previousNodeLastChildReject.html (3105B)
1 <!DOCTYPE html> 2 <html> 3 <!-- 4 Test adapted from chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js 5 --> 6 <head> 7 <title>TreeWalker: previousNodeLastChildReject</title> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 <script src="support/assert-node.js"></script> 11 <div id=log></div> 12 </head> 13 <body> 14 <p>Test that previousNode properly respects the filter.</p> 15 <script> 16 var testElement; 17 setup(function() { 18 testElement = document.createElement("div"); 19 testElement.id = 'root'; 20 // testElement.innerHTML='<div id="A1"><div id="B1"><div id="C1"></div><div id="C2"><div id="D1"></div><div id="D2"></div></div></div><div id="B2"><div id="C3"></div><div id="C4"></div></div></div>'; 21 // testElement.innerHTML=' 22 // <div id="A1"> 23 // <div id="B1"> 24 // <div id="C1"> 25 // </div> 26 // <div id="C2"> 27 // <div id="D1"> 28 // </div> 29 // <div id="D2"> 30 // </div> 31 // </div> 32 // </div> 33 // <div id="B2"> 34 // <div id="C3"> 35 // </div> 36 // <div id="C4"> 37 // </div> 38 // </div> 39 // </div>'; 40 41 // XXX for Servo, build the tree without using innerHTML 42 var a1 = document.createElement("div"); a1.id = "A1"; 43 var b1 = document.createElement("div"); b1.id = "B1"; 44 var b2 = document.createElement("div"); b2.id = "B2"; 45 var c1 = document.createElement("div"); c1.id = "C1"; 46 var c2 = document.createElement("div"); c2.id = "C2"; 47 var c3 = document.createElement("div"); c3.id = "C3"; 48 var c4 = document.createElement("div"); c4.id = "C4"; 49 var d1 = document.createElement("div"); d1.id = "D1"; 50 var d2 = document.createElement("div"); d2.id = "D2"; 51 52 testElement.appendChild(a1); 53 a1.appendChild(b1); 54 a1.appendChild(b2); 55 b1.appendChild(c1); 56 b1.appendChild(c2); 57 b2.appendChild(c3); 58 b2.appendChild(c4); 59 c2.appendChild(d1); 60 c2.appendChild(d2); 61 }); 62 63 test(function() 64 { 65 function filter(node) 66 { 67 if (node.id == "C2") 68 return NodeFilter.FILTER_REJECT; 69 return NodeFilter.FILTER_ACCEPT; 70 } 71 72 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter); 73 assert_node(walker.currentNode, { type: Element, id: 'root' }); 74 assert_node(walker.firstChild(), { type: Element, id: 'A1' }); 75 assert_node(walker.currentNode, { type: Element, id: 'A1' }); 76 assert_node(walker.nextNode(), { type: Element, id: 'B1' }); 77 assert_node(walker.currentNode, { type: Element, id: 'B1' }); 78 assert_node(walker.nextNode(), { type: Element, id: 'C1' }); 79 assert_node(walker.currentNode, { type: Element, id: 'C1' }); 80 assert_node(walker.nextNode(), { type: Element, id: 'B2' }); 81 assert_node(walker.currentNode, { type: Element, id: 'B2' }); 82 assert_node(walker.previousNode(), { type: Element, id: 'C1' }); 83 assert_node(walker.currentNode, { type: Element, id: 'C1' }); 84 }, 'Test that previousNode properly respects the filter.'); 85 </script> 86 </body> 87 </html>