diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-10-14 07:39:24 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-10-14 07:39:24 -0600 |
commit | 55769b2fbf24ed84ee0f8ea5fe856e5fd29d8e60 (patch) | |
tree | 288312924cba7055d01242d95e860cd5ec121562 /components/script/dom | |
parent | dd2f8b6891f963a6c0cf42be9212e85a86a77df7 (diff) | |
parent | 899f1cab587c92104ef9c4165786c2a04a92e24b (diff) | |
download | servo-55769b2fbf24ed84ee0f8ea5fe856e5fd29d8e60.tar.gz servo-55769b2fbf24ed84ee0f8ea5fe856e5fd29d8e60.zip |
Auto merge of #7829 - frewsxcv:htmltablecellelement-cellindex, r=Ms2ger
Implement HTMLTableCellElement::CellIndex
Extracted from #6936
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7829)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/htmltablecellelement.rs | 20 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLTableCellElement.webidl | 2 |
2 files changed, 20 insertions, 2 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) + } } diff --git a/components/script/dom/webidls/HTMLTableCellElement.webidl b/components/script/dom/webidls/HTMLTableCellElement.webidl index 0f3a2a6a14f..7db825376c4 100644 --- a/components/script/dom/webidls/HTMLTableCellElement.webidl +++ b/components/script/dom/webidls/HTMLTableCellElement.webidl @@ -9,7 +9,7 @@ interface HTMLTableCellElement : HTMLElement { attribute unsigned long colSpan; // attribute unsigned long rowSpan; //[PutForwards=value] readonly attribute DOMSettableTokenList headers; - //readonly attribute long cellIndex; + readonly attribute long cellIndex; // also has obsolete members }; |