aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs18
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)
}