Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / traversal / hixie-node-iterator / 003.xml
blob42b6b252bfab95a007b6507ba796937d2bc9b2bb
1 <html xmlns="http://www.w3.org/1999/xhtml">
2  <head>
3   <title>DOM Traversal: NodeIterator: Removal of nodes that should have no effect</title>
4   <!--
5    This tests these cases that should have no effect:
6     1. Remove a node unrelated to the reference node
7     2. Remove an ancestor of the root node
8     3. Remove the root node itself
9     4. Remove descendant of reference node
10   -->
11   <script type="text/javascript"> <![CDATA[
12     var errors = 0;
13     var log = '';
14     function doTest() {
15       if (window.testRunner) testRunner.dumpAsText();
16       var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
17       var root = document.getElementById('root');
18       var A = document.getElementById('A');
19       var B = document.getElementById('B');
20       var C = document.getElementById('C');
21       var D = document.getElementById('D');
22       var E = document.getElementById('E');
23       check(iterator.nextNode(), root);
24       remove(document.getElementById('X'));
25       check(iterator.nextNode(), A);
26       remove(document.getElementById('Y'));
27       check(iterator.nextNode(), B);
28       remove(root);
29       check(iterator.nextNode(), C);
30       remove(E);
31       check(iterator.nextNode(), D);
32       if (errors)
33         document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
34       else
35         document.getElementById('result').firstChild.data = 'PASS';
36     }
37     function check(a, b) {
38       if (!a) {
39         errors += 1;
40         log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
41       } else if (a != b) {
42         errors += 1;
43         log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
44       }
45     }
46     function remove(a) {
47       if (!a) {
48         errors += 1;
49         log += 'Tried removing null node.\n';
50       } else
51       a.parentNode.removeChild(a);
52     }
53   ]]></script>
54  </head>
55  <body onload="doTest()">
56   <pre id="result">FAIL: Script did not complete.</pre>
57   <p><span id="X"></span><span id="Y"><span id="root"><span id="A"><span id="B"><span id="C"><span id="D"><span id="E"></span></span></span></span></span></span></span></p>
58  </body>
59 </html>