273b33236f95dd2c8ce2913ccce0de65d71d0a36
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / dom / traversal / TreeWalker-traversal-reject.html
1 <!DOCTYPE html>
2 <html>
3 <!--
4 Test adapted from https://dxr.mozilla.org/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="traversal-support.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>