diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 23914d3f407..dfe91b6e17e 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -427,6 +427,7 @@ pub trait NodeHelpers { fn is_parent_of(self, child: JSRef) -> bool; fn type_id(self) -> NodeTypeId; + fn len(self) -> u32; fn parent_node(self) -> Option>; fn first_child(self) -> Option>; @@ -567,6 +568,17 @@ 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 + } + } + fn parent_node(self) -> Option> { self.parent_node.get().map(Temporary::from_rooted) }