Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(847)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html

Issue 1529523002: Import dom/ from web-platform-tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tweak W3CImportExpectations Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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/acceptNode-filter.js
5 -->
6 <head>
7 <title>TreeWalker: acceptNode-filter</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 JS objects as NodeFilters</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><div id="B2"></div> </div>';
22
23 // XXX for Servo, build the tree without using innerHTML
24 var a1 = document.createElement("div");
25 a1.id = "A1";
26 var b1 = document.createElement("div");
27 b1.id = "B1";
28 var b2 = document.createElement("div");
29 b2.id = "B2";
30 testElement.appendChild(a1);
31 a1.appendChild(b1);
32 a1.appendChild(b2);
33 });
34
35 test(function()
36 {
37 function filter(node)
38 {
39 if (node.id == "B1")
40 return NodeFilter.FILTER_SKIP;
41 return NodeFilter.FILTER_ACCEPT;
42 }
43
44 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
45 assert_node(walker.currentNode, { type: Element, id: 'root' });
46 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
47 assert_node(walker.currentNode, { type: Element, id: 'A1' });
48 assert_node(walker.nextNode(), { type: Element, id: 'B2' });
49 assert_node(walker.currentNode, { type: Element, id: 'B2' });
50 }, 'Testing with raw function filter');
51
52 test(function()
53 {
54 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {
55 acceptNode : function(node) {
56 if (node.id == "B1")
57 return NodeFilter.FILTER_SKIP;
58 return NodeFilter.FILTER_ACCEPT;
59 }
60 });
61 assert_node(walker.currentNode, { type: Element, id: 'root' });
62 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
63 assert_node(walker.currentNode, { type: Element, id: 'A1' });
64 assert_node(walker.nextNode(), { type: Element, id: 'B2' });
65 assert_node(walker.currentNode, { type: Element, id: 'B2' });
66 }, 'Testing with object filter');
67
68 test(function()
69 {
70 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, null);
71 assert_node(walker.currentNode, { type: Element, id: 'root' });
72 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
73 assert_node(walker.currentNode, { type: Element, id: 'A1' });
74 assert_node(walker.nextNode(), { type: Element, id: 'B1' });
75 assert_node(walker.currentNode, { type: Element, id: 'B1' });
76 }, 'Testing with null filter');
77
78 test(function()
79 {
80 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, undefined);
81 assert_node(walker.currentNode, { type: Element, id: 'root' });
82 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
83 assert_node(walker.currentNode, { type: Element, id: 'A1' });
84 assert_node(walker.nextNode(), { type: Element, id: 'B1' });
85 assert_node(walker.currentNode, { type: Element, id: 'B1' });
86 }, 'Testing with undefined filter');
87
88 test(function()
89 {
90 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {});
91 assert_throws(new TypeError(), function () { walker.firstChild(); });
92 assert_node(walker.currentNode, { type: Element, id: 'root' });
93 assert_throws(new TypeError(), function () { walker.nextNode(); });
94 assert_node(walker.currentNode, { type: Element, id: 'root' });
95 }, 'Testing with object lacking acceptNode property');
96
97 test(function()
98 {
99 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, { acceptNode: "foo" });
100 assert_throws(new TypeError(), function () { walker.firstChild(); });
101 assert_node(walker.currentNode, { type: Element, id: 'root' });
102 assert_throws(new TypeError(), function () { walker.nextNode(); });
103 assert_node(walker.currentNode, { type: Element, id: 'root' });
104 }, 'Testing with object with non-function acceptNode property');
105
106 test(function()
107 {
108 var filter = function() { return NodeFilter.FILTER_ACCEPT; };
109 filter.acceptNode = function(node) { return NodeFilter.FILTER_SKIP; };
110 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
111 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
112 assert_node(walker.nextNode(), { type: Element, id: 'B1' });
113 }, 'Testing with function having acceptNode function');
114
115 test(function()
116 {
117 var filter = {
118 acceptNode: function(node) {
119 return NodeFilter.FILTER_ACCEPT;
120 }
121 };
122 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
123 assert_node(walker.firstChild(), { type: Element, id: 'A1' });
124 }, 'Testing acceptNode callee');
125
126 test(function()
127 {
128 var test_error = { name: "test" };
129 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
130 function(node) {
131 throw test_error;
132 });
133 assert_throws(test_error, function () { walker.firstChild(); });
134 assert_node(walker.currentNode, { type: Element, id: 'root' });
135 assert_throws(test_error, function () { walker.nextNode(); });
136 assert_node(walker.currentNode, { type: Element, id: 'root' });
137 }, 'Testing with filter function that throws');
138
139 test(function()
140 {
141 var test_error = { name: "test" };
142 var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
143 {
144 acceptNode : function(node) {
145 throw test_error;
146 }
147 });
148 assert_throws(test_error, function () { walker.firstChild(); });
149 assert_node(walker.currentNode, { type: Element, id: 'root' });
150 assert_throws(test_error, function () { walker.nextNode(); });
151 assert_node(walker.currentNode, { type: Element, id: 'root' });
152 }, 'Testing with filter object that throws');
153
154 </script>
155 </body>
156 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698