aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/node.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-04-09 20:02:40 +0200
committerMs2ger <ms2ger@gmail.com>2014-04-10 10:27:28 +0200
commitca6cfb5bca2ffbb41dd7735557f11fb5726be6e4 (patch)
treed2f94f87e1e1c5ca84c02ea45d7bf5cf9d3c1080 /src/components/script/dom/node.rs
parentea2560ef20ec1116b0897e84fb58eb14a8ea4696 (diff)
downloadservo-ca6cfb5bca2ffbb41dd7735557f11fb5726be6e4.tar.gz
servo-ca6cfb5bca2ffbb41dd7735557f11fb5726be6e4.zip
Add support for trait-based virtual methods on Nodes, and use it for before_remove_attr and after_set_attr.
Diffstat (limited to 'src/components/script/dom/node.rs')
-rw-r--r--src/components/script/dom/node.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs
index d53c23ad5d2..2f3d1c99b67 100644
--- a/src/components/script/dom/node.rs
+++ b/src/components/script/dom/node.rs
@@ -8,7 +8,7 @@ use dom::attr::Attr;
use dom::bindings::codegen::InheritTypes::{CommentCast, DocumentCast, DocumentTypeCast};
use dom::bindings::codegen::InheritTypes::{ElementCast, TextCast, NodeCast};
use dom::bindings::codegen::InheritTypes::{CharacterDataCast, NodeBase, NodeDerived};
-use dom::bindings::codegen::InheritTypes::ProcessingInstructionCast;
+use dom::bindings::codegen::InheritTypes::{ProcessingInstructionCast, EventTargetCast};
use dom::bindings::codegen::NodeBinding::NodeConstants;
use dom::bindings::js::JS;
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
@@ -22,8 +22,9 @@ use dom::documenttype::DocumentType;
use dom::element::{Element, ElementTypeId, HTMLAnchorElementTypeId, IElement};
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::nodelist::{NodeList};
-use dom::text::Text;
use dom::processinginstruction::ProcessingInstruction;
+use dom::text::Text;
+use dom::virtualmethods::VirtualMethods;
use dom::window::Window;
use html::hubbub_html_parser::build_element_from_tag;
use layout_interface::{LayoutChan, ReapLayoutDataMsg, UntrustedNodeAddress};
@@ -1834,3 +1835,10 @@ pub fn window_from_node<T: NodeBase>(derived: &JS<T>) -> JS<Window> {
let document: JS<Document> = document_from_node(derived);
document.get().window.clone()
}
+
+impl VirtualMethods for JS<Node> {
+ fn super_type(&self) -> Option<~VirtualMethods:> {
+ let eventtarget: JS<EventTarget> = EventTargetCast::from(self);
+ Some(~eventtarget as ~VirtualMethods:)
+ }
+}