diff options
author | bors-servo <release+servo@mozilla.com> | 2014-06-13 07:46:47 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-06-13 07:46:47 -0400 |
commit | 5378871e6724d307c411f3d2b3aa79c5cc0af8b7 (patch) | |
tree | cee11c2a31f0038c7939af08ef5f38d18c2c8481 /src | |
parent | 56e1e80c97ccc88d33dafed9a7bcefdacdd2991e (diff) | |
parent | 28f8d16c87f7da49a3743585f3fb389027be04be (diff) | |
download | servo-5378871e6724d307c411f3d2b3aa79c5cc0af8b7.tar.gz servo-5378871e6724d307c411f3d2b3aa79c5cc0af8b7.zip |
auto merge of #2634 : saneyuki/servo/fix, r=Ms2ger
Fix: #2630
Diffstat (limited to 'src')
-rw-r--r-- | src/components/script/dom/node.rs | 11 | ||||
-rw-r--r-- | src/test/content/test_document_getElementById.html | 12 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 7b095bc9c57..2e3e02d381b 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -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); + } } } diff --git a/src/test/content/test_document_getElementById.html b/src/test/content/test_document_getElementById.html index 382c07574a7..2617fb2e113 100644 --- a/src/test/content/test_document_getElementById.html +++ b/src/test/content/test_document_getElementById.html @@ -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> |