[Webkit-unassigned] [Bug 17252] New: Acid3 test removing Nodes during NodeIterator walk fails
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sat Feb 9 01:33:20 PST 2008
http://bugs.webkit.org/show_bug.cgi?id=17252
Summary: Acid3 test removing Nodes during NodeIterator walk fails
Product: WebKit
Version: 525+ (Nightly build)
Platform: Macintosh
OS/Version: Mac OS X 10.5
Status: NEW
Keywords: NeedsReduction
Severity: Normal
Priority: P2
Component: New Bugs
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: eric at webkit.org
CC: darin at apple.com
Acid3 test removing Nodes during NodeIterator walk fails
Test 2: reached expectation 13 when expecting expectation 12
We'll need to reduce this further.
function () {
// test 2: Removing nodes during iteration
var count = 0;
var expect = function(n, node1, node2) {
count += 1;
assert(n == count, "reached expectation " + n + " when expecting
expectation " + count);
assertEquals(node1, node2, "expectation " + count + " failed");
};
var doc = getTestDocument();
var t1 = doc.body.appendChild(doc.createElement('t1'));
var t2 = doc.body.appendChild(doc.createElement('t2'));
var t3 = doc.body.appendChild(doc.createElement('t3'));
var t4 = doc.body.appendChild(doc.createElement('t4'));
var callCount = 0;
var filterFunctions = [
function (node) { expect(1, node, doc.body); return true; }, // filter
0
function (node) { expect(3, node, t1); return true; }, // filter 1
function (node) { expect(5, node, t2); return true; }, // filter 2
function (node) { expect(7, node, t3); doc.body.removeChild(t4); return
true; }, // filter 3
function (node) { expect(9, node, t4); return true; }, // filter 4
function (node) { expect(11, node, t4); doc.body.removeChild(t4);
return 2 /* REJECT */; }, // filter 5
function (node) { expect(12, node, t3); return true; }, // filter 6
function (node) { expect(14, node, t2); doc.body.removeChild(t2);
return true; }, // filter 7
function (node) { expect(16, node, t1); return true; }, // filter 8
];
var i = doc.createNodeIterator(doc.documentElement.lastChild, 0xFFFFFFFF,
function (node) { return filterFunctions[callCount++](node); }, true);
// * B 1 2 3 4
expect(2, i.nextNode(), doc.body); // filter 0
// [B] * 1 2 3 4
expect(4, i.nextNode(), t1); // filter 1
// B [1] * 2 3 4
expect(6, i.nextNode(), t2); // filter 2
// B 1 [2] * 3 4
expect(8, i.nextNode(), t3); // filter 3
// B 1 2 [3] *
doc.body.appendChild(t4);
// B 1 2 [3] * 4
expect(10, i.nextNode(), t4); // filter 4
// B 1 2 3 [4] *
expect(13, i.previousNode(), t3); // filters 5, 6
// B 1 2 3 * (4) // filter 5
// B 1 2 [3] * // between 5 and 6
// B 1 2 * (3) // filter 6
// B 1 2 * [3]
expect(15, i.previousNode(), t2); // filter 7
// B 1 2 * (2) [3]
// -- spec says "For instance, if a NodeFilter removes a node
// from a document, it can still accept the node, which
// means that the node may be returned by the NodeIterator
// or TreeWalker even though it is no longer in the subtree
// being traversed."
// -- but it also says "If changes to the iterated list do not
// remove the reference node, they do not affect the state
// of the NodeIterator."
// B 1 * [3]
expect(17, i.previousNode(), t1); // filter 8
// B [1] * 3
return 1;
},
--
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the webkit-unassigned
mailing list