diff options
author | Josh Matthews <josh@joshmatthews.net> | 2014-04-09 20:02:40 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-04-10 10:27:28 +0200 |
commit | ca6cfb5bca2ffbb41dd7735557f11fb5726be6e4 (patch) | |
tree | d2f94f87e1e1c5ca84c02ea45d7bf5cf9d3c1080 /src/components/script/dom/htmliframeelement.rs | |
parent | ea2560ef20ec1116b0897e84fb58eb14a8ea4696 (diff) | |
download | servo-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/htmliframeelement.rs')
-rw-r--r-- | src/components/script/dom/htmliframeelement.rs | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/components/script/dom/htmliframeelement.rs b/src/components/script/dom/htmliframeelement.rs index a33e5baf84d..c98634682a6 100644 --- a/src/components/script/dom/htmliframeelement.rs +++ b/src/components/script/dom/htmliframeelement.rs @@ -3,15 +3,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::HTMLIFrameElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLIFrameElementDerived}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLIFrameElementDerived, HTMLElementCast}; use dom::bindings::js::JS; use dom::bindings::error::ErrorResult; use dom::document::Document; use dom::element::{HTMLIFrameElementTypeId, Element}; -use dom::element::{AttributeHandlers, AfterSetAttrListener, BeforeRemoveAttrListener}; +use dom::element::AttributeHandlers; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::node::{Node, ElementNodeTypeId}; +use dom::virtualmethods::VirtualMethods; use dom::windowproxy::WindowProxy; use servo_util::str::DOMString; @@ -210,8 +211,18 @@ impl HTMLIFrameElement { } } -impl AfterSetAttrListener for JS<HTMLIFrameElement> { - fn AfterSetAttr(&mut self, name: DOMString, value: DOMString) { +impl VirtualMethods for JS<HTMLIFrameElement> { + fn super_type(&self) -> Option<~VirtualMethods:> { + let htmlelement: JS<HTMLElement> = HTMLElementCast::from(self); + Some(~htmlelement as ~VirtualMethods:) + } + + fn after_set_attr(&mut self, name: DOMString, value: DOMString) { + match self.super_type() { + Some(ref mut s) => s.after_set_attr(name.clone(), value.clone()), + _ => (), + } + if "sandbox" == name { let mut modes = AllowNothing as u8; for word in value.split(' ') { @@ -230,10 +241,13 @@ impl AfterSetAttrListener for JS<HTMLIFrameElement> { self.get_mut().sandbox = Some(modes); } } -} -impl BeforeRemoveAttrListener for JS<HTMLIFrameElement> { - fn BeforeRemoveAttr(&mut self, name: DOMString) { + fn before_remove_attr(&mut self, name: DOMString, value: DOMString) { + match self.super_type() { + Some(ref mut s) => s.before_remove_attr(name.clone(), value), + _ => (), + } + if "sandbox" == name { self.get_mut().sandbox = None; } |