[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

darin at apple.com darin at apple.com
Wed Dec 22 11:11:47 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 98464f2226dee3c0376d91b059b1d596fc121f81
Author: darin at apple.com <darin at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jul 14 22:49:39 2010 +0000

    2010-07-14  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            TreeWalker::previousSibling calls firstChild instead of lastChild when handling FILTER_SKIP
            https://bugs.webkit.org/show_bug.cgi?id=42008
    
            TreeWalker::previousNode does not handle FILTER_REJECT when processing lastChild
            https://bugs.webkit.org/show_bug.cgi?id=42010
    
            Tests: fast/dom/TreeWalker/previousNodeLastChildReject.html
                   fast/dom/TreeWalker/previousSiblingLastChildSkip.html
    
            * dom/TreeWalker.cpp:
            (WebCore::TreeWalker::previousSibling): Call lastChild instead of firstChild.
            (WebCore::TreeWalker::previousNode): Fix handling of FILTER_REJECT by exiting
            the lastChild loop when we encounter it.
    2010-07-14  Darin Adler  <darin at apple.com>
    
            Reviewed by Sam Weinig.
    
            TreeWalker::previousSibling calls firstChild instead of lastChild when handling FILTER_SKIP
            https://bugs.webkit.org/show_bug.cgi?id=42008
    
            TreeWalker::previousNode does not handle FILTER_REJECT when processing lastChild
            https://bugs.webkit.org/show_bug.cgi?id=42010
    
            * fast/dom/TreeWalker/previousNodeLastChildReject-expected.txt: Added.
            * fast/dom/TreeWalker/previousNodeLastChildReject.html: Added.
            * fast/dom/TreeWalker/previousSiblingLastChildSkip-expected.txt: Added.
            * fast/dom/TreeWalker/previousSiblingLastChildSkip.html: Added.
            * fast/dom/TreeWalker/script-tests: Added.
            * fast/dom/TreeWalker/script-tests/TEMPLATE.html: Copied from LayoutTests/fast/dom/Element/script-tests/TEMPLATE.html.
            * fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js: Added.
            * fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63365 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 009eb1b..28b11d7 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-14  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        TreeWalker::previousSibling calls firstChild instead of lastChild when handling FILTER_SKIP
+        https://bugs.webkit.org/show_bug.cgi?id=42008
+
+        TreeWalker::previousNode does not handle FILTER_REJECT when processing lastChild
+        https://bugs.webkit.org/show_bug.cgi?id=42010
+
+        * fast/dom/TreeWalker/previousNodeLastChildReject-expected.txt: Added.
+        * fast/dom/TreeWalker/previousNodeLastChildReject.html: Added.
+        * fast/dom/TreeWalker/previousSiblingLastChildSkip-expected.txt: Added.
+        * fast/dom/TreeWalker/previousSiblingLastChildSkip.html: Added.
+        * fast/dom/TreeWalker/script-tests: Added.
+        * fast/dom/TreeWalker/script-tests/TEMPLATE.html: Copied from LayoutTests/fast/dom/Element/script-tests/TEMPLATE.html.
+        * fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js: Added.
+        * fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js: Added.
+
 2010-07-14  Ojan Vafai  <ojan at chromium.org>
 
         Reviewed by Adam Barth.
diff --git a/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject-expected.txt b/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject-expected.txt
new file mode 100644
index 0000000..0ba7bb4
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject-expected.txt
@@ -0,0 +1,14 @@
+Test for a specific problem with previousNode that failed in older versions of WebKit.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS walker.firstChild(); walker.currentNode.id is 'A1'
+PASS walker.nextNode(); walker.currentNode.id is 'B1'
+PASS walker.nextNode(); walker.currentNode.id is 'C1'
+PASS walker.nextNode(); walker.currentNode.id is 'B2'
+PASS walker.previousNode(); walker.currentNode.id is 'C1'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject.html b/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject.html
new file mode 100644
index 0000000..9445675
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/previousNodeLastChildReject.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../js/resources/js-test-style.css">
+<script src="../../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/previousNodeLastChildReject.js"></script>
+<script src="../../js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip-expected.txt b/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip-expected.txt
new file mode 100644
index 0000000..4cc3b5e
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip-expected.txt
@@ -0,0 +1,16 @@
+Test for a specific problem with previousSibling that failed in older versions of WebKit.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS walker.firstChild(); walker.currentNode.id is 'A1'
+PASS walker.nextNode(); walker.currentNode.id is 'C1'
+PASS walker.nextNode(); walker.currentNode.id is 'C2'
+PASS walker.nextNode(); walker.currentNode.id is 'D1'
+PASS walker.nextNode(); walker.currentNode.id is 'D2'
+PASS walker.nextNode(); walker.currentNode.id is 'B2'
+PASS walker.previousSibling(); walker.currentNode.id is 'C2'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip.html b/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip.html
new file mode 100644
index 0000000..5f44a37
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/previousSiblingLastChildSkip.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../js/resources/js-test-style.css">
+<script src="../../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/previousSiblingLastChildSkip.js"></script>
+<script src="../../js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/backgrounds/repeat/script-tests/TEMPLATE.html b/LayoutTests/fast/dom/TreeWalker/script-tests/TEMPLATE.html
similarity index 100%
copy from LayoutTests/fast/backgrounds/repeat/script-tests/TEMPLATE.html
copy to LayoutTests/fast/dom/TreeWalker/script-tests/TEMPLATE.html
diff --git a/LayoutTests/fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js b/LayoutTests/fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js
new file mode 100644
index 0000000..dcc7e58
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js
@@ -0,0 +1,21 @@
+description('Test for a specific problem with previousNode that failed in older versions of WebKit.');
+
+var testElement = document.createElement("div");
+testElement.innerHTML='<div id="A1"><div id="B1"><div id="C1"></div><div id="C2"><div id="D1"></div><div id="D2"></div></div></div><div id="B2"><div id="C3"></div><div id="C4"></div></div></div>';
+
+function filter(node)
+{
+    if (node.id == "C2")
+        return NodeFilter.FILTER_REJECT;
+    return NodeFilter.FILTER_ACCEPT;
+}
+
+var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter, false);
+
+shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'B1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'C1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'");
+shouldBe("walker.previousNode(); walker.currentNode.id", "'C1'");
+
+var successfullyParsed = true;
diff --git a/LayoutTests/fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js b/LayoutTests/fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js
new file mode 100644
index 0000000..ed7c577
--- /dev/null
+++ b/LayoutTests/fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js
@@ -0,0 +1,23 @@
+description('Test for a specific problem with previousSibling that failed in older versions of WebKit.');
+
+var testElement = document.createElement("div");
+testElement.innerHTML='<div id="A1"><div id="B1"><div id="C1"></div><div id="C2"><div id="D1"></div><div id="D2"></div></div></div><div id="B2"><div id="C3"></div><div id="C4"></div></div></div>';
+
+function filter(node)
+{
+    if (node.id == "B1")
+        return NodeFilter.FILTER_SKIP;
+    return NodeFilter.FILTER_ACCEPT;
+}
+
+var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter, false);
+
+shouldBe("walker.firstChild(); walker.currentNode.id", "'A1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'C1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'C2'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'D1'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'D2'");
+shouldBe("walker.nextNode(); walker.currentNode.id", "'B2'");
+shouldBe("walker.previousSibling(); walker.currentNode.id", "'C2'");
+
+var successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a74140c..c9f6c31 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-07-14  Darin Adler  <darin at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        TreeWalker::previousSibling calls firstChild instead of lastChild when handling FILTER_SKIP
+        https://bugs.webkit.org/show_bug.cgi?id=42008
+
+        TreeWalker::previousNode does not handle FILTER_REJECT when processing lastChild
+        https://bugs.webkit.org/show_bug.cgi?id=42010
+
+        Tests: fast/dom/TreeWalker/previousNodeLastChildReject.html
+               fast/dom/TreeWalker/previousSiblingLastChildSkip.html
+
+        * dom/TreeWalker.cpp:
+        (WebCore::TreeWalker::previousSibling): Call lastChild instead of firstChild.
+        (WebCore::TreeWalker::previousNode): Fix handling of FILTER_REJECT by exiting
+        the lastChild loop when we encounter it.
+
 2010-07-14  Sam Weinig  <sam at webkit.org>
 
         Reviewed by Brady Eidson.
diff --git a/WebCore/dom/TreeWalker.cpp b/WebCore/dom/TreeWalker.cpp
index de06363..9c46fb3 100644
--- a/WebCore/dom/TreeWalker.cpp
+++ b/WebCore/dom/TreeWalker.cpp
@@ -151,8 +151,8 @@ Node* TreeWalker::previousSibling(ScriptState* state)
                     m_current = sibling.release();
                     return m_current.get();
                 case NodeFilter::FILTER_SKIP:
-                    if (sibling->firstChild()) {
-                        sibling = sibling->firstChild();
+                    if (sibling->lastChild()) {
+                        sibling = sibling->lastChild();
                         continue;
                     }
                     break;
@@ -224,8 +224,8 @@ Node* TreeWalker::previousNode(ScriptState* state)
                 acceptNodeResult = acceptNode(state, node.get());
                 if (state && state->hadException())
                     return 0;
-                if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
-                    continue;
+                if (acceptNodeResult == NodeFilter::FILTER_REJECT)
+                    break;
             }
             if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) {
                 m_current = node.release();

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list