[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