diff options
Diffstat (limited to 'components/script/dom/htmlbaseelement.rs')
-rw-r--r-- | components/script/dom/htmlbaseelement.rs | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 0a6e0ed8d0a..62db191aa05 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -9,7 +9,7 @@ use dom::bindings::codegen::InheritTypes::HTMLBaseElementDerived; use dom::bindings::codegen::InheritTypes::HTMLElementCast; use dom::bindings::js::Root; use dom::document::Document; -use dom::element::ElementTypeId; +use dom::element::{AttributeMutation, ElementTypeId}; use dom::eventtarget::{EventTarget, EventTargetTypeId}; use dom::htmlelement::{HTMLElement, HTMLElementTypeId}; use dom::node::{Node, NodeTypeId, document_from_node}; @@ -56,15 +56,6 @@ impl HTMLBaseElement { parsed.unwrap_or(base) } - /// Update the cached base element in response to adding or removing an - /// attribute. - pub fn add_remove_attr(&self, attr: &Attr) { - if *attr.local_name() == atom!("href") { - let document = document_from_node(self); - document.refresh_base_element(); - } - } - /// Update the cached base element in response to binding or unbinding from /// a tree. pub fn bind_unbind(&self, tree_in_doc: bool) { @@ -84,14 +75,11 @@ impl VirtualMethods for HTMLBaseElement { Some(HTMLElementCast::from_ref(self) as &VirtualMethods) } - fn after_set_attr(&self, attr: &Attr) { - self.super_type().unwrap().after_set_attr(attr); - self.add_remove_attr(attr); - } - - fn before_remove_attr(&self, attr: &Attr) { - self.super_type().unwrap().before_remove_attr(attr); - self.add_remove_attr(attr); + fn attribute_mutated(&self, attr: &Attr, mutation: AttributeMutation) { + self.super_type().unwrap().attribute_mutated(attr, mutation); + if *attr.local_name() == atom!(href) { + document_from_node(self).refresh_base_element(); + } } fn bind_to_tree(&self, tree_in_doc: bool) { |