TreeWalker-traversal-reject.html (3552B)
1 <!DOCTYPE html> 2 <html> 3 <!-- 4 Test adapted from chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/traversal-reject.js 5 --> 6 <head> 7 <title>TreeWalker: traversal-reject</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 TreeWalker with rejection</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> <div id="B2"></div><div id="B3"></div> </div>'; 21 // <div id="A1"> 22 // <div id="B1"> 23 // <div id="C1"></div> 24 // </div> 25 // <div id="B2"></div> 26 // <div id="B3"></div> 27 // </div> 28 29 30 // XXX for Servo, build the tree without using innerHTML 31 var a1 = document.createElement("div"); a1.id = "A1"; 32 var b1 = document.createElement("div"); b1.id = "B1"; 33 var b2 = document.createElement("div"); b2.id = "B2"; 34 var b3 = document.createElement("div"); b3.id = "B3"; 35 var c1 = document.createElement("div"); c1.id = "C1"; 36 37 testElement.appendChild(a1); 38 a1.appendChild(b1); 39 a1.appendChild(b2); 40 a1.appendChild(b3); 41 b1.appendChild(c1); 42 }); 43 44 var rejectB1Filter = { 45 acceptNode: function(node) { 46 if (node.id == 'B1') 47 return NodeFilter.FILTER_REJECT; 48 49 return NodeFilter.FILTER_ACCEPT; 50 } 51 } 52 53 var skipB2Filter = { 54 acceptNode: function(node) { 55 if (node.id == 'B2') 56 return NodeFilter.FILTER_SKIP; 57 58 return NodeFilter.FILTER_ACCEPT; 59 } 60 } 61 62 test(function() 63 { 64 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter); 65 assert_node(walker.nextNode(), { type: Element, id: 'A1' }); 66 assert_node(walker.nextNode(), { type: Element, id: 'B2' }); 67 assert_node(walker.nextNode(), { type: Element, id: 'B3' }); 68 }, 'Testing nextNode'); 69 70 test(function() 71 { 72 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter); 73 assert_node(walker.firstChild(), { type: Element, id: 'A1' }); 74 assert_node(walker.firstChild(), { type: Element, id: 'B2' }); 75 }, 'Testing firstChild'); 76 77 test(function() 78 { 79 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter); 80 assert_node(walker.firstChild(), { type: Element, id: 'A1' }); 81 assert_node(walker.firstChild(), { type: Element, id: 'B1' }); 82 assert_node(walker.nextSibling(), { type: Element, id: 'B3' }); 83 }, 'Testing nextSibling'); 84 85 test(function() 86 { 87 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter); 88 walker.currentNode = testElement.querySelectorAll('#C1')[0]; 89 assert_node(walker.parentNode(), { type: Element, id: 'A1' }); 90 }, 'Testing parentNode'); 91 92 test(function() 93 { 94 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter); 95 walker.currentNode = testElement.querySelectorAll('#B3')[0]; 96 assert_node(walker.previousSibling(), { type: Element, id: 'B1' }); 97 }, 'Testing previousSibling'); 98 99 test(function() 100 { 101 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter); 102 walker.currentNode = testElement.querySelectorAll('#B3')[0]; 103 assert_node(walker.previousNode(), { type: Element, id: 'B2' }); 104 assert_node(walker.previousNode(), { type: Element, id: 'A1' }); 105 }, 'Testing previousNode'); 106 107 </script> 108 </body> 109 </html>