servo: Merge #8041 - Introduce trait Castable (from nox:castable); r=jdm

Removes all those messy FooCast structures in InheritTypes.rs.

Source-Repo: https://github.com/servo/servo
Source-Revision: 674589c370d978f543e71f995d58c5b28e6e9842
This commit is contained in:
Anthony Ramine
2015-10-21 07:57:32 -06:00
parent f51f42da73
commit db09beb657
84 changed files with 1193 additions and 1511 deletions

View File

@@ -5,13 +5,13 @@
use dom::attr::Attr;
use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding;
use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding::HTMLOptGroupElementMethods;
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, HTMLOptionElementCast};
use dom::bindings::codegen::InheritTypes::{HTMLOptionElementDerived, NodeCast};
use dom::bindings::conversions::Castable;
use dom::bindings::js::Root;
use dom::document::Document;
use dom::element::{AttributeMutation, IN_ENABLED_STATE};
use dom::element::{AttributeMutation, Element, IN_ENABLED_STATE};
use dom::htmlelement::HTMLElement;
use dom::node::{Node};
use dom::htmloptionelement::HTMLOptionElement;
use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use util::str::DOMString;
@@ -50,8 +50,7 @@ impl HTMLOptGroupElementMethods for HTMLOptGroupElement {
impl VirtualMethods for HTMLOptGroupElement {
fn super_type(&self) -> Option<&VirtualMethods> {
let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
Some(htmlelement as &VirtualMethods)
Some(self.upcast::<HTMLElement>() as &VirtualMethods)
}
fn attribute_mutated(&self, attr: &Attr, mutation: AttributeMutation) {
@@ -66,22 +65,21 @@ impl VirtualMethods for HTMLOptGroupElement {
},
AttributeMutation::Removed => false,
};
let node = NodeCast::from_ref(self);
let el = ElementCast::from_ref(self);
let el = self.upcast::<Element>();
el.set_disabled_state(disabled_state);
el.set_enabled_state(!disabled_state);
let options = node.children().filter(|child| {
child.is_htmloptionelement()
}).map(|child| Root::from_ref(HTMLOptionElementCast::to_ref(child.r()).unwrap()));
let options = el.upcast::<Node>().children().filter(|child| {
child.is::<HTMLOptionElement>()
}).map(|child| Root::from_ref(child.downcast::<HTMLOptionElement>().unwrap()));
if disabled_state {
for option in options {
let el = ElementCast::from_ref(option.r());
let el = option.upcast::<Element>();
el.set_disabled_state(true);
el.set_enabled_state(false);
}
} else {
for option in options {
let el = ElementCast::from_ref(option.r());
let el = option.upcast::<Element>();
el.check_disabled_attribute();
}
}