diff options
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 23914d3f407..9143677d1e0 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -427,6 +427,8 @@ pub trait NodeHelpers { fn is_parent_of(self, child: JSRef<Node>) -> bool; fn type_id(self) -> NodeTypeId; + fn len(self) -> u32; + fn index(self) -> u32; fn parent_node(self) -> Option<Temporary<Node>>; fn first_child(self) -> Option<Temporary<Node>>; @@ -567,6 +569,22 @@ impl<'a> NodeHelpers for JSRef<'a, Node> { self.type_id } + // https://dom.spec.whatwg.org/#concept-node-length + fn len(self) -> u32 { + match self.type_id { + NodeTypeId::DocumentType => 0, + NodeTypeId::CharacterData(_) => { + CharacterDataCast::to_ref(self).unwrap().Length() + }, + _ => self.children().count() as u32 + } + } + + // https://dom.spec.whatwg.org/#concept-tree-index + fn index(self) -> u32 { + self.preceding_siblings().count() as u32 + } + fn parent_node(self) -> Option<Temporary<Node>> { self.parent_node.get().map(Temporary::from_rooted) } |