Reviewed by me
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 May 2004 23:31:42 +0000 (23:31 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 May 2004 23:31:42 +0000 (23:31 +0000)
        Added layout tests for DOM traversal objects.

        * layout-tests/traversal/node-iterator-001-expected.txt: Added.
        * layout-tests/traversal/node-iterator-001.html: Added.
        * layout-tests/traversal/node-iterator-002-expected.txt: Added.
        * layout-tests/traversal/node-iterator-002.html: Added.
        * layout-tests/traversal/node-iterator-003-expected.txt: Added.
        * layout-tests/traversal/node-iterator-003.html: Added.
        * layout-tests/traversal/node-iterator-004-expected.txt: Added.
        * layout-tests/traversal/node-iterator-004.html: Added.
        * layout-tests/traversal/node-iterator-005-expected.txt: Added.
        * layout-tests/traversal/node-iterator-005.html: Added.
        * layout-tests/traversal/node-iterator-006-expected.txt: Added.
        * layout-tests/traversal/node-iterator-006.html: Added.
        * layout-tests/traversal/node-iterator-007-expected.txt: Added.
        * layout-tests/traversal/node-iterator-007.html: Added.
        * layout-tests/traversal/traversal.js: Added.
        * layout-tests/traversal/tree-walker-001-expected.txt: Added.
        * layout-tests/traversal/tree-walker-001.html: Added.
        * layout-tests/traversal/tree-walker-002-expected.txt: Added.
        * layout-tests/traversal/tree-walker-002.html: Added.
        * layout-tests/traversal/tree-walker-003-expected.txt: Added.
        * layout-tests/traversal/tree-walker-003.html: Added.
        * layout-tests/traversal/tree-walker-004-expected.txt: Added.
        * layout-tests/traversal/tree-walker-004.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6538 268f45cc-cd09-0410-ab3c-d52691b4dbfc

24 files changed:
LayoutTests/traversal/node-iterator-001-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-001.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-002-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-002.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-003-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-003.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-004-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-004.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-005-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-005.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-006-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-006.html [new file with mode: 0644]
LayoutTests/traversal/node-iterator-007-expected.txt [new file with mode: 0644]
LayoutTests/traversal/node-iterator-007.html [new file with mode: 0644]
LayoutTests/traversal/traversal.js [new file with mode: 0644]
LayoutTests/traversal/tree-walker-001-expected.txt [new file with mode: 0644]
LayoutTests/traversal/tree-walker-001.html [new file with mode: 0644]
LayoutTests/traversal/tree-walker-002-expected.txt [new file with mode: 0644]
LayoutTests/traversal/tree-walker-002.html [new file with mode: 0644]
LayoutTests/traversal/tree-walker-003-expected.txt [new file with mode: 0644]
LayoutTests/traversal/tree-walker-003.html [new file with mode: 0644]
LayoutTests/traversal/tree-walker-004-expected.txt [new file with mode: 0644]
LayoutTests/traversal/tree-walker-004.html [new file with mode: 0644]
WebCore/ChangeLog-2005-08-23

diff --git a/LayoutTests/traversal/node-iterator-001-expected.txt b/LayoutTests/traversal/node-iterator-001-expected.txt
new file mode 100644 (file)
index 0000000..cfe0de3
--- /dev/null
@@ -0,0 +1,41 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x106
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'A'; pointer before"
+          RenderText {TEXT} at (280,0) size 168x16
+            text run at (280,0) width 168: ": * A B C D E F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'A'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": [A] * B C D E F G H I"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'A'; pointer before"
+          RenderText {TEXT} at (280,0) size 184x16
+            text run at (280,0) width 184: ": * [A] B C D E F G H I"
+        RenderBlock {P} at (0,90) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'A'; pointer before"
+          RenderText {TEXT} at (280,0) size 184x16
+            text run at (280,0) width 184: ": * [A] B C D E F G H I"
diff --git a/LayoutTests/traversal/node-iterator-001.html b/LayoutTests/traversal/node-iterator-001.html
new file mode 100644 (file)
index 0000000..f65c71c
--- /dev/null
@@ -0,0 +1,31 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span><span id="D"></span><span id="E"></span><span id="F"></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpNodeIterator(it, "ref node 'A'; pointer before"));
+it.nextNode();
+document.write(dumpNodeIterator(it, "ref node 'A'; pointer after"));
+it.previousNode();
+document.write(dumpNodeIterator(it, "ref node 'A'; pointer before"));
+it.previousNode();
+document.write(dumpNodeIterator(it, "ref node 'A'; pointer before"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-002-expected.txt b/LayoutTests/traversal/node-iterator-002-expected.txt
new file mode 100644 (file)
index 0000000..f836dac
--- /dev/null
@@ -0,0 +1,50 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x196
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * E F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'E'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 168x16
+            text run at (272,0) width 168: ": A B C [D] * F G H I"
+        RenderBlock {P} at (0,90) size 784x16
+          RenderText {TEXT} at (0,0) size 240x16
+            text run at (0,0) width 240: "insert new node 'X' before 'F'"
+        RenderBlock {P} at (0,120) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * X F G H I"
+        RenderBlock {P} at (0,150) size 784x16
+          RenderText {TEXT} at (0,0) size 192x16
+            text run at (0,0) width 192: "move node 'I' before 'X'"
+        RenderBlock {P} at (0,180) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * I X F G H"
diff --git a/LayoutTests/traversal/node-iterator-002.html b/LayoutTests/traversal/node-iterator-002.html
new file mode 100644 (file)
index 0000000..c4aab21
--- /dev/null
@@ -0,0 +1,47 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span><span id="D"></span><span id="E"></span><span id="F"></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 4; i++)
+    it.nextNode();
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// remove node 'E'
+document.write("<p>remove node 'E'");
+parent.removeChild(document.getElementById('E'));
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// insert new node 'X' before 'F'
+document.write("<p>insert new node 'X' before 'F'");
+var X = document.createElement('SPAN');
+X.setAttribute('ID', 'X');
+parent.insertBefore(X, document.getElementById('F'));
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// move node 'I' before 'X'
+document.write("<p>move node 'I' before 'X'");
+var I = document.getElementById('I');
+parent.removeChild(I);
+parent.insertBefore(I, X);
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-003-expected.txt b/LayoutTests/traversal/node-iterator-003-expected.txt
new file mode 100644 (file)
index 0000000..414e86d
--- /dev/null
@@ -0,0 +1,31 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * E F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'D'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'C'; pointer after"
+          RenderText {TEXT} at (272,0) size 168x16
+            text run at (272,0) width 168: ": A B [C] * E F G H I"
diff --git a/LayoutTests/traversal/node-iterator-003.html b/LayoutTests/traversal/node-iterator-003.html
new file mode 100644 (file)
index 0000000..4fdfd49
--- /dev/null
@@ -0,0 +1,33 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span><span id="D"></span><span id="E"></span><span id="F"></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 4; i++)
+    it.nextNode();
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// remove node 'D'
+document.write("<p>remove node 'D'");
+parent.removeChild(document.getElementById('D'));
+document.write(dumpNodeIterator(it, "ref node 'C'; pointer after"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-004-expected.txt b/LayoutTests/traversal/node-iterator-004-expected.txt
new file mode 100644 (file)
index 0000000..6a9085b
--- /dev/null
@@ -0,0 +1,31 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'E'; pointer before"
+          RenderText {TEXT} at (280,0) size 184x16
+            text run at (280,0) width 184: ": A B C D * [E] F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'E'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'F'; pointer before"
+          RenderText {TEXT} at (280,0) size 168x16
+            text run at (280,0) width 168: ": A B C D * [F] G H I"
diff --git a/LayoutTests/traversal/node-iterator-004.html b/LayoutTests/traversal/node-iterator-004.html
new file mode 100644 (file)
index 0000000..01f44fd
--- /dev/null
@@ -0,0 +1,34 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span><span id="D"></span><span id="E"></span><span id="F"></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 5; i++)
+    it.nextNode();
+it.previousNode();
+document.write(dumpNodeIterator(it, "ref node 'E'; pointer before"));
+
+// remove node 'E'
+document.write("<p>remove node 'E'");
+parent.removeChild(document.getElementById('E'));
+document.write(dumpNodeIterator(it, "ref node 'F'; pointer before"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-005-expected.txt b/LayoutTests/traversal/node-iterator-005-expected.txt
new file mode 100644 (file)
index 0000000..395a614
--- /dev/null
@@ -0,0 +1,32 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * E F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'D'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'C'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B [C] * E F G H I D"
diff --git a/LayoutTests/traversal/node-iterator-005.html b/LayoutTests/traversal/node-iterator-005.html
new file mode 100644 (file)
index 0000000..d721416
--- /dev/null
@@ -0,0 +1,35 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span><span id="D"></span><span id="E"></span><span id="F"></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 4; i++)
+    it.nextNode();
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// remove node 'D'; insert it at the end
+document.write("<p>remove node 'D'");
+var D = document.getElementById('D');
+parent.removeChild(D);
+parent.appendChild(D);
+document.write(dumpNodeIterator(it, "ref node 'C'; pointer after"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-006-expected.txt b/LayoutTests/traversal/node-iterator-006-expected.txt
new file mode 100644 (file)
index 0000000..f28e12a
--- /dev/null
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 280x16
+            RenderText {TEXT} at (0,0) size 280x16
+              text run at (0,0) width 280: "Expect ref node 'C'; pointer before"
+          RenderText {TEXT} at (280,0) size 88x16
+            text run at (280,0) width 88: ": A B * [C]"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'C'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'B'; pointer after"
+          RenderText {TEXT} at (272,0) size 72x16
+            text run at (272,0) width 72: ": A [B] *"
diff --git a/LayoutTests/traversal/node-iterator-006.html b/LayoutTests/traversal/node-iterator-006.html
new file mode 100644 (file)
index 0000000..da7c56a
--- /dev/null
@@ -0,0 +1,35 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 3; i++)
+    it.nextNode();
+ it.previousNode();
+document.write(dumpNodeIterator(it, "ref node 'C'; pointer before"));
+
+// remove node 'C'
+document.write("<p>remove node 'C'");
+var D = document.getElementById('C');
+parent.removeChild(D);
+document.write(dumpNodeIterator(it, "ref node 'B'; pointer after"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/node-iterator-007-expected.txt b/LayoutTests/traversal/node-iterator-007-expected.txt
new file mode 100644 (file)
index 0000000..c7dc166
--- /dev/null
@@ -0,0 +1,28 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderBlock {P} at (0,0) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'D'; pointer after"
+          RenderText {TEXT} at (272,0) size 184x16
+            text run at (272,0) width 184: ": A B C [D] * E F G H I"
+        RenderBlock {P} at (0,30) size 784x16
+          RenderText {TEXT} at (0,0) size 120x16
+            text run at (0,0) width 120: "remove node 'C'"
+        RenderBlock {P} at (0,60) size 784x16
+          RenderInline {B} at (0,0) size 272x16
+            RenderText {TEXT} at (0,0) size 272x16
+              text run at (0,0) width 272: "Expect ref node 'B'; pointer after"
+          RenderText {TEXT} at (272,0) size 120x16
+            text run at (272,0) width 120: ": A [B] * G H I"
diff --git a/LayoutTests/traversal/node-iterator-007.html b/LayoutTests/traversal/node-iterator-007.html
new file mode 100644 (file)
index 0000000..ef0d82b
--- /dev/null
@@ -0,0 +1,34 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A"></span><span id="B"></span><span id="C"><span id="D"></span><span id="E"></span><span id="F"></span></span><span id="G"></span><span id="H"></span><span id="I"></span>
+</div>
+<div style="font-family: Courier; font-size: 14;">
+<script>
+var parent = document.getElementById('test');
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+for (i = 0; i < 4; i++)
+    it.nextNode();
+document.write(dumpNodeIterator(it, "ref node 'D'; pointer after"));
+
+// remove node 'C'
+document.write("<p>remove node 'C'");
+var D = document.getElementById('C');
+parent.removeChild(D);
+document.write(dumpNodeIterator(it, "ref node 'B'; pointer after"));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/traversal.js b/LayoutTests/traversal/traversal.js
new file mode 100644 (file)
index 0000000..c6bb62f
--- /dev/null
@@ -0,0 +1,65 @@
+//-------------------------------------------------------------------------------------------------------
+// Java script library to run traversal layout tests
+
+function dumpNodeIterator(it, expectedResult) {
+    var string = '<p><b>Expect ' + expectedResult + '</b>: ';
+    var checkIt = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+    var printedPointer = false;
+    while (1) {
+        var node = checkIt.nextNode();
+        if (!node)
+            break;
+        if (!printedPointer && (it.referenceNode == node || it.referenceNode == undefined)) {
+            printedPointer = true;
+            var s = it.referenceNode == undefined ? node.id + ' ' : '[' + node.id + '] ';
+            if (it.pointerBeforeReferenceNode)
+                string += "* " + s;
+            else   
+                string += s + "* ";
+        }
+        else {
+            string += node.id + " ";
+        }
+    }
+    return string;
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function nodeDepth(node) {
+    var depth = 0;
+    while ((node = node.parentNode))
+        depth++;
+    return depth;
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function dumpTreeWalker(tw, root, start, backwards) {
+    var string = '<p><b>Tree Walker: </b><br>';
+    if (root == undefined)
+        root = tw.currentNode;
+    var rootDepth = nodeDepth(root);
+    if (start == undefined)
+        start = root;
+    tw.currentNode = start;
+    string +=  start.id + '<br>';   
+    while (1) {
+        var current = tw.currentNode;
+        if (backwards == undefined)
+            tw.nextNode();
+        else
+            backwards ? tw.previousNode() : tw.nextNode();
+        var n = tw.currentNode;
+        if (current == n)
+            break;
+        var depth = nodeDepth(n) - rootDepth;
+        for (i = 0; i < depth; i++)
+            string += '  ';   
+        string +=  n.id + '<br>';   
+    }
+    return string;
+}
+
+//-------------------------------------------------------------------------------------------------------
+
diff --git a/LayoutTests/traversal/tree-walker-001-expected.txt b/LayoutTests/traversal/tree-walker-001-expected.txt
new file mode 100644 (file)
index 0000000..b749bbe
--- /dev/null
@@ -0,0 +1,108 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x272
+        RenderBlock {P} at (0,0) size 784x272
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "A"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 40x16
+            text run at (0,32) width 40: "  A.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 40x16
+            text run at (0,48) width 40: "  A.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 40x16
+            text run at (0,64) width 40: "  A.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 8x16
+            text run at (0,80) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 40x16
+            text run at (0,96) width 40: "  B.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 72x16
+            text run at (0,112) width 72: "    B.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 8x16
+            text run at (0,128) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 40x16
+            text run at (0,144) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 72x16
+            text run at (0,160) width 72: "    C.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 104x16
+            text run at (0,176) width 104: "      C.1.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 104x16
+            text run at (0,192) width 104: "      C.1.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,208) size 104x16
+            text run at (0,208) width 104: "      C.1.1.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,224) size 72x16
+            text run at (0,224) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,240) size 88x16
+            text run at (0,240) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,256) size 8x16
+            text run at (0,256) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
diff --git a/LayoutTests/traversal/tree-walker-001.html b/LayoutTests/traversal/tree-walker-001.html
new file mode 100644 (file)
index 0000000..b40a2e3
--- /dev/null
@@ -0,0 +1,56 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A">
+    <span id="A.1">
+    </span>
+    <span id="A.2">
+    </span>
+    <span id="A.3">
+       </span>
+</span>
+<span id="B">
+       <span id="B.1">
+               <span id="B.1.1">
+               </span>
+       </span>
+</span>
+<span id="C">
+       <span id="C.1">
+               <span id="C.1.1">
+                       <span id="C.1.1.1">
+                       </span>
+                       <span id="C.1.1.2">
+                       </span>
+                       <span id="C.1.1.3">
+                       </span>
+               </span>
+        <span id="C.1.2">
+                       <span id="C.2.1">
+                       </span>
+        </span>
+       </span>
+</span>
+<span id="D">
+</span>
+</div>
+<div style="font-family: Courier; font-size: 14; white-space: pre">
+<script>
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var tw = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpTreeWalker(tw, root));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/tree-walker-002-expected.txt b/LayoutTests/traversal/tree-walker-002-expected.txt
new file mode 100644 (file)
index 0000000..5b985bd
--- /dev/null
@@ -0,0 +1,96 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x208
+        RenderBlock {P} at (0,0) size 784x208
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 40x16
+            text run at (0,32) width 40: "  B.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 72x16
+            text run at (0,48) width 72: "    B.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 8x16
+            text run at (0,64) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 40x16
+            text run at (0,80) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 72x16
+            text run at (0,96) width 72: "    C.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 104x16
+            text run at (0,112) width 104: "      C.1.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 104x16
+            text run at (0,128) width 104: "      C.1.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 104x16
+            text run at (0,144) width 104: "      C.1.1.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 72x16
+            text run at (0,160) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 88x16
+            text run at (0,176) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 8x16
+            text run at (0,192) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
diff --git a/LayoutTests/traversal/tree-walker-002.html b/LayoutTests/traversal/tree-walker-002.html
new file mode 100644 (file)
index 0000000..06af23a
--- /dev/null
@@ -0,0 +1,57 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A">
+    <span id="A.1">
+    </span>
+    <span id="A.2">
+    </span>
+    <span id="A.3">
+       </span>
+</span>
+<span id="B">
+       <span id="B.1">
+               <span id="B.1.1">
+               </span>
+       </span>
+</span>
+<span id="C">
+       <span id="C.1">
+               <span id="C.1.1">
+                       <span id="C.1.1.1">
+                       </span>
+                       <span id="C.1.1.2">
+                       </span>
+                       <span id="C.1.1.3">
+                       </span>
+               </span>
+        <span id="C.1.2">
+                       <span id="C.2.1">
+                       </span>
+        </span>
+       </span>
+</span>
+<span id="D">
+</span>
+</div>
+<div style="font-family: Courier; font-size: 14; white-space: pre">
+<script>
+var root = document.getElementById('B');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var tw = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+tw.previousNode();
+document.write(dumpTreeWalker(tw, root));
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/tree-walker-003-expected.txt b/LayoutTests/traversal/tree-walker-003-expected.txt
new file mode 100644 (file)
index 0000000..e4addb1
--- /dev/null
@@ -0,0 +1,146 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x578
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x430
+        RenderBlock {P} at (0,0) size 784x208
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "A"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 40x16
+            text run at (0,32) width 40: "  A.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 40x16
+            text run at (0,48) width 40: "  A.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 40x16
+            text run at (0,64) width 40: "  A.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 8x16
+            text run at (0,80) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 40x16
+            text run at (0,96) width 40: "  B.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 72x16
+            text run at (0,112) width 72: "    B.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 8x16
+            text run at (0,128) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 40x16
+            text run at (0,144) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 72x16
+            text run at (0,160) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 88x16
+            text run at (0,176) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 8x16
+            text run at (0,192) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+        RenderBlock {P} at (0,222) size 784x208
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 88x16
+            text run at (0,32) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 72x16
+            text run at (0,48) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 40x16
+            text run at (0,64) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 8x16
+            text run at (0,80) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 72x16
+            text run at (0,96) width 72: "    B.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 40x16
+            text run at (0,112) width 40: "  B.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 8x16
+            text run at (0,128) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 40x16
+            text run at (0,144) width 40: "  A.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 40x16
+            text run at (0,160) width 40: "  A.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 40x16
+            text run at (0,176) width 40: "  A.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 8x16
+            text run at (0,192) width 8: "A"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
diff --git a/LayoutTests/traversal/tree-walker-003.html b/LayoutTests/traversal/tree-walker-003.html
new file mode 100644 (file)
index 0000000..6cc7b56
--- /dev/null
@@ -0,0 +1,70 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A">
+    <span id="A.1">
+    </span>
+    <span id="A.2">
+    </span>
+    <span id="A.3">
+       </span>
+</span>
+<span id="B">
+       <span id="B.1">
+               <span id="B.1.1">
+               </span>
+               <span id="B.1.2">
+               </span>
+       </span>
+       <span id="B.2">
+               <span id="B.2.1">
+               </span>
+       </span>
+</span>
+<span id="C">
+       <span id="C.1">
+               <span id="C.1.1">
+                       <span id="C.1.1.1">
+                       </span>
+                       <span id="C.1.1.2">
+                       </span>
+                       <span id="C.1.1.3">
+                       </span>
+               </span>
+        <span id="C.1.2">
+                       <span id="C.2.1">
+                       </span>
+        </span>
+       </span>
+</span>
+<span id="D">
+</span>
+</div>
+<div style="font-family: Courier; font-size: 14; white-space: pre">
+<script>
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN') {
+        if (n.id == 'B.1' || n.id == 'C.1.1')
+            return NodeFilter.FILTER_REJECT;
+        return NodeFilter.FILTER_ACCEPT;
+    }
+    return NodeFilter.FILTER_SKIP;
+}
+
+var tw1 = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpTreeWalker(tw1, root));
+
+var tw2 = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpTreeWalker(tw2, root, document.getElementById('D'), true));
+
+</script>
+</div>
+</body>
+</html>
diff --git a/LayoutTests/traversal/tree-walker-004-expected.txt b/LayoutTests/traversal/tree-walker-004-expected.txt
new file mode 100644 (file)
index 0000000..46dec47
--- /dev/null
@@ -0,0 +1,188 @@
+layer at (0,0) size 800x676
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x676
+  RenderBlock {HTML} at (0,0) size 800x676
+    RenderBody {BODY} at (8,8) size 784x654
+      RenderBlock {DIV} at (0,0) size 784x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderInline {SPAN} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+            RenderInline {SPAN} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+              RenderInline {SPAN} at (0,0) size 0x0
+                RenderText {TEXT} at (0,0) size 0x0
+              RenderText {TEXT} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+        RenderInline {SPAN} at (0,0) size 0x0
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,0) size 784x654
+        RenderBlock {P} at (0,0) size 784x320
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "A"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 40x16
+            text run at (0,32) width 40: "  A.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 40x16
+            text run at (0,48) width 40: "  A.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 40x16
+            text run at (0,64) width 40: "  A.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 8x16
+            text run at (0,80) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 40x16
+            text run at (0,96) width 40: "  B.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 72x16
+            text run at (0,112) width 72: "    B.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 72x16
+            text run at (0,128) width 72: "    B.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 40x16
+            text run at (0,144) width 40: "  B.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 72x16
+            text run at (0,160) width 72: "    B.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 8x16
+            text run at (0,176) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 40x16
+            text run at (0,192) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,208) size 72x16
+            text run at (0,208) width 72: "    C.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,224) size 104x16
+            text run at (0,224) width 104: "      C.1.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,240) size 104x16
+            text run at (0,240) width 104: "      C.1.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,256) size 104x16
+            text run at (0,256) width 104: "      C.1.1.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,272) size 72x16
+            text run at (0,272) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,288) size 88x16
+            text run at (0,288) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,304) size 8x16
+            text run at (0,304) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+        RenderBlock {P} at (0,334) size 784x320
+          RenderInline {B} at (0,0) size 104x16
+            RenderText {TEXT} at (0,0) size 104x16
+              text run at (0,0) width 104: "Tree Walker: "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,16) size 8x16
+            text run at (0,16) width 8: "D"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,32) size 88x16
+            text run at (0,32) width 88: "      C.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,48) size 72x16
+            text run at (0,48) width 72: "    C.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,64) size 104x16
+            text run at (0,64) width 104: "      C.1.1.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,80) size 104x16
+            text run at (0,80) width 104: "      C.1.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,96) size 104x16
+            text run at (0,96) width 104: "      C.1.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,112) size 72x16
+            text run at (0,112) width 72: "    C.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,128) size 40x16
+            text run at (0,128) width 40: "  C.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,144) size 8x16
+            text run at (0,144) width 8: "C"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,160) size 72x16
+            text run at (0,160) width 72: "    B.2.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,176) size 40x16
+            text run at (0,176) width 40: "  B.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,192) size 72x16
+            text run at (0,192) width 72: "    B.1.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,208) size 72x16
+            text run at (0,208) width 72: "    B.1.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,224) size 40x16
+            text run at (0,224) width 40: "  B.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,240) size 8x16
+            text run at (0,240) width 8: "B"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,256) size 40x16
+            text run at (0,256) width 40: "  A.3"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,272) size 40x16
+            text run at (0,272) width 40: "  A.2"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,288) size 40x16
+            text run at (0,288) width 40: "  A.1"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,304) size 8x16
+            text run at (0,304) width 8: "A"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
diff --git a/LayoutTests/traversal/tree-walker-004.html b/LayoutTests/traversal/tree-walker-004.html
new file mode 100644 (file)
index 0000000..8d1a5f8
--- /dev/null
@@ -0,0 +1,67 @@
+<html> 
+<head>
+<script src=traversal.js language="JavaScript" type="text/JavaScript" ></script>
+<title>Traversal Test</title> 
+</head> 
+<body>
+<div id="test">
+<span id="A">
+    <span id="A.1">
+    </span>
+    <span id="A.2">
+    </span>
+    <span id="A.3">
+       </span>
+</span>
+<span id="B">
+       <span id="B.1">
+               <span id="B.1.1">
+               </span>
+               <span id="B.1.2">
+               </span>
+       </span>
+       <span id="B.2">
+               <span id="B.2.1">
+               </span>
+       </span>
+</span>
+<span id="C">
+       <span id="C.1">
+               <span id="C.1.1">
+                       <span id="C.1.1.1">
+                       </span>
+                       <span id="C.1.1.2">
+                       </span>
+                       <span id="C.1.1.3">
+                       </span>
+               </span>
+        <span id="C.1.2">
+                       <span id="C.2.1">
+                       </span>
+        </span>
+       </span>
+</span>
+<span id="D">
+</span>
+</div>
+<div style="font-family: Courier; font-size: 14; white-space: pre">
+<script>
+var root = document.getElementById('A');
+
+function testNodeFiter(n)
+{
+    if (n.tagName == 'SPAN')
+        return NodeFilter.FILTER_ACCEPT;
+    return NodeFilter.FILTER_SKIP;
+}
+
+var tw1 = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpTreeWalker(tw1, root));
+
+var tw2 = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
+document.write(dumpTreeWalker(tw2, root, document.getElementById('D'), true));
+
+</script>
+</div>
+</body>
+</html>
index d96dbea..c3f06a2 100644 (file)
@@ -1,5 +1,35 @@
 2004-05-04  Ken Kocienda  <kocienda@apple.com>
 
+        Reviewed by me
+        
+        Added layout tests for DOM traversal objects.
+
+        * layout-tests/traversal/node-iterator-001-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-001.html: Added.
+        * layout-tests/traversal/node-iterator-002-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-002.html: Added.
+        * layout-tests/traversal/node-iterator-003-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-003.html: Added.
+        * layout-tests/traversal/node-iterator-004-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-004.html: Added.
+        * layout-tests/traversal/node-iterator-005-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-005.html: Added.
+        * layout-tests/traversal/node-iterator-006-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-006.html: Added.
+        * layout-tests/traversal/node-iterator-007-expected.txt: Added.
+        * layout-tests/traversal/node-iterator-007.html: Added.
+        * layout-tests/traversal/traversal.js: Added.
+        * layout-tests/traversal/tree-walker-001-expected.txt: Added.
+        * layout-tests/traversal/tree-walker-001.html: Added.
+        * layout-tests/traversal/tree-walker-002-expected.txt: Added.
+        * layout-tests/traversal/tree-walker-002.html: Added.
+        * layout-tests/traversal/tree-walker-003-expected.txt: Added.
+        * layout-tests/traversal/tree-walker-003.html: Added.
+        * layout-tests/traversal/tree-walker-004-expected.txt: Added.
+        * layout-tests/traversal/tree-walker-004.html: Added.
+
+2004-05-04  Ken Kocienda  <kocienda@apple.com>
+
         Reviewed by Hyatt
 
         * khtml/xml/dom2_traversalimpl.cpp: