Fix the assertion failure with inserting node contains child which has id into the document

https://github.com/mozilla/servo/issues/2630
This commit is contained in:
Tetsuharu OHZEKI 2014-06-11 03:03:07 +09:00
parent 897e39dcf3
commit 28f8d16c87
2 changed files with 19 additions and 4 deletions

View file

@ -1137,10 +1137,13 @@ impl Node {
// Step 8.
for node in nodes.mut_iter() {
parent.add_child(node, child);
if parent.is_in_doc() {
node.flags.deref().borrow_mut().insert(IsInDoc);
} else {
node.flags.deref().borrow_mut().remove(IsInDoc);
let is_in_doc = parent.is_in_doc();
for mut kid in node.traverse_preorder() {
if is_in_doc {
kid.flags.deref().borrow_mut().insert(IsInDoc);
} else {
kid.flags.deref().borrow_mut().remove(IsInDoc);
}
}
}

View file

@ -106,6 +106,18 @@
is(target2, null, "test 8-1, should return null after updated id via Attr.value");
}
// Test the assertion with inserting node with child having id into the document (mozilla#2630)
// This need not to port to WPF-test because this tests servo's internally flags.
{
let TEST_ID = "test-9";
let a = document.createElement("a");
let b = document.createElement("b");
a.appendChild(b).id = TEST_ID;
gBody.appendChild(a);
let result = document.getElementById(TEST_ID);
is(result, b, "test 9-0");
}
finish();
</script>
</body>