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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/traversal/NodeIterator-removal.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 <title>NodeIterator removal tests</title>
3 <link rel="author" title="Aryeh Gregor" href=ayg@aryeh.name>
4 <meta name=timeout content=long>
5 <div id=log></div>
6 <script src=../../../../resources/testharness.js></script>
7 <script src=../../../../resources/testharnessreport.js></script>
8 <script src=../common.js></script>
9 <script>
10 "use strict";
11
12 for (var i = 0; i < testNodes.length; i++) {
13 var node = eval(testNodes[i]);
14 if (!node.parentNode) {
15 // Nothing to test
16 continue;
17 }
18 test(function() {
19 var iters = [];
20 var descs = [];
21 var expectedReferenceNodes = [];
22 var expectedPointers = [];
23
24 for (var j = 0; j < testNodes.length; j++) {
25 var root = eval(testNodes[j]);
26 // Add all distinct iterators with this root, calling nextNode()
27 // repeatedly until it winds up with the same iterator.
28 for (var k = 0; ; k++) {
29 var iter = document.createNodeIterator(root);
30 for (var l = 0; l < k; l++) {
31 iter.nextNode();
32 }
33 if (k && iter.referenceNode == iters[iters.length - 1].referenceNode
34 && iter.pointerBeforeReferenceNode
35 == iters[iters.length - 1].pointerBeforeReferenceNode) {
36 break;
37 } else {
38 iters.push(iter);
39 descs.push("document.createNodeIterator(" + testNodes[j]
40 + ") advanced " + k + " times");
41 expectedReferenceNodes.push(iter.referenceNode);
42 expectedPointers.push(iter.pointerBeforeReferenceNode);
43
44 var idx = iters.length - 1;
45
46 // "If the node is root or is not an inclusive ancestor of the
47 // referenceNode attribute value, terminate these steps."
48 //
49 // We also have to rule out the case where node is an ancestor of
50 // root, which is implicitly handled by the spec since such a node
51 // was not part of the iterator collection to start with.
52 if (isInclusiveAncestor(node, root)
53 || !isInclusiveAncestor(node, iter.referenceNode)) {
54 continue;
55 }
56
57 // "If the pointerBeforeReferenceNode attribute value is false, set
58 // the referenceNode attribute to the first node preceding the node
59 // that is being removed, and terminate these steps."
60 if (!iter.pointerBeforeReferenceNode) {
61 expectedReferenceNodes[idx] = previousNode(node);
62 continue;
63 }
64
65 // "If there is a node following the last inclusive descendant of the
66 // node that is being removed, set the referenceNode attribute to the
67 // first such node, and terminate these steps."
68 var next = nextNodeDescendants(node);
69 if (next) {
70 expectedReferenceNodes[idx] = next;
71 continue;
72 }
73
74 // "Set the referenceNode attribute to the first node preceding the
75 // node that is being removed and set the pointerBeforeReferenceNode
76 // attribute to false."
77 expectedReferenceNodes[idx] = previousNode(node);
78 expectedPointers[idx] = false;
79 }
80 }
81 }
82
83 var oldParent = node.parentNode;
84 var oldSibling = node.nextSibling;
85 oldParent.removeChild(node);
86
87 for (var j = 0; j < iters.length; j++) {
88 var iter = iters[j];
89 assert_equals(iter.referenceNode, expectedReferenceNodes[j],
90 ".referenceNode of " + descs[j]);
91 assert_equals(iter.pointerBeforeReferenceNode, expectedPointers[j],
92 ".pointerBeforeReferenceNode of " + descs[j]);
93 }
94
95 oldParent.insertBefore(node, oldSibling);
96 }, "Test removing node " + testNodes[i]);
97 }
98
99 testDiv.style.display = "none";
100 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698