mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Implement child reparenting and node removal during parsing.
This commit is contained in:
parent
69a2c45b34
commit
c5e101b6e5
3 changed files with 35 additions and 5 deletions
|
@ -166,8 +166,11 @@ impl<'a> TreeSink for servohtmlparser::Sink {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_from_parent(&mut self, _target: JS<Node>) {
|
fn remove_from_parent(&mut self, target: JS<Node>) {
|
||||||
error!("remove_from_parent not implemented!");
|
let node = target.root();
|
||||||
|
if let Some(ref parent) = node.r().GetParentNode().root() {
|
||||||
|
parent.r().RemoveChild(node.r()).unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mark_script_already_started(&mut self, node: JS<Node>) {
|
fn mark_script_already_started(&mut self, node: JS<Node>) {
|
||||||
|
@ -182,8 +185,15 @@ impl<'a> TreeSink for servohtmlparser::Sink {
|
||||||
script.map(|script| script.prepare());
|
script.map(|script| script.prepare());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reparent_children(&mut self, _node: JS<Node>, _new_parent: JS<Node>) {
|
fn reparent_children(&mut self, node: JS<Node>, new_parent: JS<Node>) {
|
||||||
panic!("unimplemented")
|
let new_parent = new_parent.root();
|
||||||
|
let new_parent = new_parent.r();
|
||||||
|
let old_parent = node.root();
|
||||||
|
let old_parent = old_parent.r();
|
||||||
|
while let Some(ref child) = old_parent.GetFirstChild().root() {
|
||||||
|
new_parent.AppendChild(child.r()).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,12 @@
|
||||||
"url": "/_mozilla/mozilla/characterdata.html"
|
"url": "/_mozilla/mozilla/characterdata.html"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"mozilla/child_reparenting.html": [
|
||||||
|
{
|
||||||
|
"path": "mozilla/child_reparenting.html",
|
||||||
|
"url": "/_mozilla/mozilla/child_reparenting.html"
|
||||||
|
}
|
||||||
|
],
|
||||||
"mozilla/collections.html": [
|
"mozilla/collections.html": [
|
||||||
{
|
{
|
||||||
"path": "mozilla/collections.html",
|
"path": "mozilla/collections.html",
|
||||||
|
|
14
tests/wpt/mozilla/tests/mozilla/child_reparenting.html
Normal file
14
tests/wpt/mozilla/tests/mozilla/child_reparenting.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body><font><p></font>
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
assert_equals(document.body.firstChild.tagName, "FONT");
|
||||||
|
assert_equals(document.body.firstChild.nextSibling.tagName, "P");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue