OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <!-- |
| 4 Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit
/LayoutTests/fast/dom/TreeWalker/script-tests/traversal-skip.js |
| 5 --> |
| 6 <head> |
| 7 <title>TreeWalker: traversal-skip</title> |
| 8 <script src="../../../../resources/testharness.js"></script> |
| 9 <script src="../../../../resources/testharnessreport.js"></script> |
| 10 <script src="traversal-support.js"></script> |
| 11 <link rel="stylesheet" href="../../../../resources/testharness.css"> |
| 12 <div id=log></div> |
| 13 </head> |
| 14 <body> |
| 15 <p>Test TreeWalker with skipping</p> |
| 16 <script> |
| 17 var testElement; |
| 18 setup(function() { |
| 19 testElement = document.createElement("div"); |
| 20 testElement.id = 'root'; |
| 21 // testElement.innerHTML='<div id="A1"> <div id="B1"> <div id="C1"></div>
</div> <div id="B2"></div><div id="B3"></div> </div>'; |
| 22 // <div id="A1"> |
| 23 // <div id="B1"> |
| 24 // <div id="C1"></div> |
| 25 // </div> |
| 26 // <div id="B2"></div> |
| 27 // <div id="B3"></div> |
| 28 // </div> |
| 29 |
| 30 |
| 31 // XXX for Servo, build the tree without using innerHTML |
| 32 var a1 = document.createElement("div"); a1.id = "A1"; |
| 33 var b1 = document.createElement("div"); b1.id = "B1"; |
| 34 var b2 = document.createElement("div"); b2.id = "B2"; |
| 35 var b3 = document.createElement("div"); b3.id = "B3"; |
| 36 var c1 = document.createElement("div"); c1.id = "C1"; |
| 37 |
| 38 testElement.appendChild(a1); |
| 39 a1.appendChild(b1); |
| 40 a1.appendChild(b2); |
| 41 a1.appendChild(b3); |
| 42 b1.appendChild(c1); |
| 43 }); |
| 44 |
| 45 var skipB1Filter = { |
| 46 acceptNode: function(node) { |
| 47 if (node.id == 'B1') |
| 48 return NodeFilter.FILTER_SKIP; |
| 49 |
| 50 return NodeFilter.FILTER_ACCEPT; |
| 51 } |
| 52 } |
| 53 |
| 54 var skipB2Filter = { |
| 55 acceptNode: function(node) { |
| 56 if (node.id == 'B2') |
| 57 return NodeFilter.FILTER_SKIP; |
| 58 |
| 59 return NodeFilter.FILTER_ACCEPT; |
| 60 } |
| 61 } |
| 62 |
| 63 test(function() |
| 64 { |
| 65 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB1Filter); |
| 66 assert_node(walker.nextNode(), { type: Element, id: 'A1' }); |
| 67 assert_node(walker.nextNode(), { type: Element, id: 'C1' }); |
| 68 assert_node(walker.nextNode(), { type: Element, id: 'B2' }); |
| 69 assert_node(walker.nextNode(), { type: Element, id: 'B3' }); |
| 70 }, 'Testing nextNode'); |
| 71 |
| 72 test(function() |
| 73 { |
| 74 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB1Filter); |
| 75 assert_node(walker.firstChild(), { type: Element, id: 'A1' }); |
| 76 assert_node(walker.firstChild(), { type: Element, id: 'C1' }); |
| 77 }, 'Testing firstChild'); |
| 78 |
| 79 test(function() |
| 80 { |
| 81 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB2Filter); |
| 82 assert_node(walker.firstChild(), { type: Element, id: 'A1' }); |
| 83 assert_node(walker.firstChild(), { type: Element, id: 'B1' }); |
| 84 assert_node(walker.nextSibling(), { type: Element, id: 'B3' }); |
| 85 }, 'Testing nextSibling'); |
| 86 |
| 87 test(function() |
| 88 { |
| 89 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB1Filter); |
| 90 walker.currentNode = testElement.querySelectorAll('#C1')[0]; |
| 91 assert_node(walker.parentNode(), { type: Element, id: 'A1' }); |
| 92 }, 'Testing parentNode'); |
| 93 |
| 94 test(function() |
| 95 { |
| 96 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB2Filter); |
| 97 walker.currentNode = testElement.querySelectorAll('#B3')[0]; |
| 98 assert_node(walker.previousSibling(), { type: Element, id: 'B1' }); |
| 99 }, 'Testing previousSibling'); |
| 100 |
| 101 test(function() |
| 102 { |
| 103 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
skipB1Filter); |
| 104 walker.currentNode = testElement.querySelectorAll('#B3')[0]; |
| 105 assert_node(walker.previousNode(), { type: Element, id: 'B2' }); |
| 106 assert_node(walker.previousNode(), { type: Element, id: 'C1' }); |
| 107 assert_node(walker.previousNode(), { type: Element, id: 'A1' }); |
| 108 }, 'Testing previousNode'); |
| 109 |
| 110 </script> |
| 111 </body> |
| 112 </html> |
OLD | NEW |