diff options
author | David Zbarsky <dzbarsky@gmail.com> | 2015-08-07 20:48:32 -0400 |
---|---|---|
committer | David Zbarsky <dzbarsky@gmail.com> | 2015-08-09 12:24:15 -0400 |
commit | 54adae26c672528852e03acdae14b5fb7c996cbb (patch) | |
tree | f32b76a586d6bf3a3a3f1804411a6d0d995ae993 /components/script/dom/htmltableelement.rs | |
parent | 6a8bc8528498c0cbb2e50567d765a989cde2d115 (diff) | |
download | servo-54adae26c672528852e03acdae14b5fb7c996cbb.tar.gz servo-54adae26c672528852e03acdae14b5fb7c996cbb.zip |
Implement HTMLTableElement#createTBody
Diffstat (limited to 'components/script/dom/htmltableelement.rs')
-rw-r--r-- | components/script/dom/htmltableelement.rs | 26 |
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 { |