mirror of
https://github.com/servo/servo.git
synced 2025-06-24 09:04:33 +01:00
Enable only remove operation for Document::update_idmap().
This commit is contained in:
parent
8dc5fe0fe5
commit
fd0dadbddf
3 changed files with 26 additions and 11 deletions
|
@ -406,23 +406,33 @@ impl Document {
|
|||
|
||||
pub fn update_idmap(&mut self,
|
||||
abstract_self: AbstractNode,
|
||||
new_id: DOMString,
|
||||
new_id: Option<DOMString>,
|
||||
old_id: Option<DOMString>) {
|
||||
// remove old ids if the old ones are not same as the new one.
|
||||
// remove old ids:
|
||||
// * if the old ones are not same as the new one,
|
||||
// * OR if the new one is none.
|
||||
match old_id {
|
||||
Some(ref old_id) if new_id != *old_id => {
|
||||
Some(ref old_id) if new_id.is_none() ||
|
||||
(*new_id.get_ref() != *old_id) => {
|
||||
self.idmap.remove(old_id);
|
||||
}
|
||||
_ => ()
|
||||
}
|
||||
|
||||
// TODO: support the case if multiple elements which haves same id are in the same document.
|
||||
self.idmap.mangle(new_id, abstract_self, |_, new_node: AbstractNode| -> AbstractNode {
|
||||
new_node
|
||||
},
|
||||
|_, old_node: &mut AbstractNode, new_node: AbstractNode| {
|
||||
*old_node = new_node;
|
||||
});
|
||||
match new_id {
|
||||
Some(new_id) => {
|
||||
// TODO: support the case if multiple elements
|
||||
// which haves same id are in the same document.
|
||||
self.idmap.mangle(new_id, abstract_self,
|
||||
|_, new_node: AbstractNode| -> AbstractNode {
|
||||
new_node
|
||||
},
|
||||
|_, old_node: &mut AbstractNode, new_node: AbstractNode| {
|
||||
*old_node = new_node;
|
||||
});
|
||||
}
|
||||
None => ()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue