aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmltableelement.rs
diff options
context:
space:
mode:
authorDavid Zbarsky <dzbarsky@gmail.com>2015-08-07 20:48:32 -0400
committerDavid Zbarsky <dzbarsky@gmail.com>2015-08-09 12:24:15 -0400
commit54adae26c672528852e03acdae14b5fb7c996cbb (patch)
treef32b76a586d6bf3a3a3f1804411a6d0d995ae993 /components/script/dom/htmltableelement.rs
parent6a8bc8528498c0cbb2e50567d765a989cde2d115 (diff)
downloadservo-54adae26c672528852e03acdae14b5fb7c996cbb.tar.gz
servo-54adae26c672528852e03acdae14b5fb7c996cbb.zip
Implement HTMLTableElement#createTBody
Diffstat (limited to 'components/script/dom/htmltableelement.rs')
-rw-r--r--components/script/dom/htmltableelement.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs
index a8a1cdf1b7b..96db990368b 100644
--- a/components/script/dom/htmltableelement.rs
+++ b/components/script/dom/htmltableelement.rs
@@ -6,14 +6,16 @@ use dom::attr::{Attr, AttrHelpers, AttrValue};
use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods;
use dom::bindings::codegen::Bindings::HTMLTableElementBinding;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
-use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCaptionElementCast};
+use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, HTMLTableCaptionElementCast};
use dom::bindings::codegen::InheritTypes::{HTMLTableElementDerived, NodeCast};
-use dom::bindings::js::Root;
+use dom::bindings::codegen::InheritTypes::HTMLTableSectionElementDerived;
+use dom::bindings::js::{Root, RootedReference};
use dom::document::Document;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
-use dom::element::ElementTypeId;
+use dom::element::{ElementHelpers, ElementTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::htmltablecaptionelement::HTMLTableCaptionElement;
+use dom::htmltablesectionelement::HTMLTableSectionElement;
use dom::node::{Node, NodeHelpers, NodeTypeId, document_from_node};
use dom::virtualmethods::VirtualMethods;
@@ -110,6 +112,24 @@ impl<'a> HTMLTableElementMethods for &'a HTMLTableElement {
NodeCast::from_ref(caption.r()).remove_self();
}
}
+
+ // https://html.spec.whatwg.org/multipage/#dom-table-createtbody
+ fn CreateTBody(self) -> Root<HTMLTableSectionElement> {
+ let tbody = HTMLTableSectionElement::new("tbody".to_owned(),
+ None,
+ document_from_node(self).r());
+ let node = NodeCast::from_ref(self);
+ let last_tbody =
+ node.rev_children()
+ .filter_map(ElementCast::to_root)
+ .find(|n| n.is_htmltablesectionelement() && n.local_name() == &atom!("tbody"));
+ let reference_element =
+ last_tbody.and_then(|t| NodeCast::from_root(t).GetNextSibling());
+
+ assert!(node.InsertBefore(NodeCast::from_ref(tbody.r()),
+ reference_element.r()).is_ok());
+ tbody
+ }
}
pub trait HTMLTableElementHelpers {