diff options
author | Corey Farwell <coreyf@rwell.org> | 2015-10-02 07:46:44 -0400 |
---|---|---|
committer | Corey Farwell <coreyf@rwell.org> | 2015-10-06 10:46:02 -0400 |
commit | 899f1cab587c92104ef9c4165786c2a04a92e24b (patch) | |
tree | 7ece06dc66561211a8a3c0d431ae31a7cbdbcc4f /components/script/dom/htmltablecellelement.rs | |
parent | ad94ef5a96e954f1a660cdd3a2ff03e0787f690b (diff) | |
download | servo-899f1cab587c92104ef9c4165786c2a04a92e24b.tar.gz servo-899f1cab587c92104ef9c4165786c2a04a92e24b.zip |
Implement HTMLTableCellElement::CellIndex
Extracted from #6936
Diffstat (limited to 'components/script/dom/htmltablecellelement.rs')
-rw-r--r-- | components/script/dom/htmltablecellelement.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 7be54174eae..d377d1cee3d 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -5,7 +5,11 @@ use cssparser::RGBA; use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCellElementDerived}; +use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; +use dom::bindings::codegen::InheritTypes::HTMLElementCast; +use dom::bindings::codegen::InheritTypes::HTMLTableCellElementDerived; +use dom::bindings::codegen::InheritTypes::HTMLTableRowElementDerived; +use dom::bindings::codegen::InheritTypes::NodeCast; use dom::bindings::js::LayoutJS; use dom::document::Document; use dom::element::{AttributeMutation, ElementTypeId}; @@ -78,6 +82,20 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement { // https://html.spec.whatwg.org/multipage/#dom-tdth-colspan make_uint_setter!(SetColSpan, "colspan"); + + // https://html.spec.whatwg.org/multipage/#dom-tdth-cellindex + fn CellIndex(&self) -> i32 { + let self_node = NodeCast::from_ref(self); + + let parent_children = match self_node.GetParentNode() { + Some(ref parent_node) if parent_node.is_htmltablerowelement() => parent_node.children(), + _ => return -1, + }; + + parent_children.filter(|c| c.is_htmltablecellelement()) + .position(|c| c.r() == self_node) + .map(|p| p as i32).unwrap_or(-1) + } } |