diff options
author | Jinwoo Song <jinwoo7.song@samsung.com> | 2015-04-28 20:34:04 +0900 |
---|---|---|
committer | Jinwoo Song <jinwoo7.song@samsung.com> | 2015-05-27 16:37:30 +0900 |
commit | 0e4c792dc5c061ed2b4faad8619ccb63ba30abfe (patch) | |
tree | 37f0fa6afaa032288ff560cd6f08db3d1bceb129 /components/script/dom/nodeiterator.rs | |
parent | 2701c264ab3a5fce34c3d925fedced193ecc2d19 (diff) | |
download | servo-0e4c792dc5c061ed2b4faad8619ccb63ba30abfe.tar.gz servo-0e4c792dc5c061ed2b4faad8619ccb63ba30abfe.zip |
Implement more NodeIterator attribute and methods
Just implement the skelectons
- referenceNode attribute
- nextNode() and previousNode()
Diffstat (limited to 'components/script/dom/nodeiterator.rs')
-rw-r--r-- | components/script/dom/nodeiterator.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 0a37dfc3125..33e630bd8cf 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -5,16 +5,20 @@ use dom::bindings::codegen::Bindings::NodeIteratorBinding; use dom::bindings::codegen::Bindings::NodeIteratorBinding::NodeIteratorMethods; use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter; +use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, JSRef, Temporary}; +use dom::bindings::js::MutNullableJS; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::document::{Document, DocumentHelpers}; use dom::node::{Node}; +use std::default::Default; #[dom_struct] pub struct NodeIterator { reflector_: Reflector, root_node: JS<Node>, + reference_node: MutNullableJS<Node>, what_to_show: u32, filter: Filter } @@ -26,6 +30,7 @@ impl NodeIterator { NodeIterator { reflector_: Reflector::new(), root_node: JS::from_rooted(root_node), + reference_node: Default::default(), what_to_show: what_to_show, filter: filter } @@ -73,8 +78,46 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { } } + // https://dom.spec.whatwg.org/#dom-nodeiterator-referencenode + fn GetReferenceNode(self) -> Option<Temporary<Node>> { + self.reference_node.get() + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode + fn PreviousNode(self) -> Fallible<Option<Temporary<Node>>> { + self.prev_node() + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode + fn NextNode(self) -> Fallible<Option<Temporary<Node>>> { + self.next_node() + } +} + +/* +trait PrivateNodeIteratorHelpers { + //fn accept_node(self, node: JSRef<Node>) -> Fallible<u16>; +} +*/ +pub trait NodeIteratorHelpers { + fn next_node(self) -> Fallible<Option<Temporary<Node>>>; + fn prev_node(self) -> Fallible<Option<Temporary<Node>>>; } +impl<'a> NodeIteratorHelpers for JSRef<'a, NodeIterator> { + // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode + fn next_node(self) -> Fallible<Option<Temporary<Node>>> { + Ok(None) + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode + fn prev_node(self) -> Fallible<Option<Temporary<Node>>> { + Ok(None) + } + +} + + #[jstraceable] pub enum Filter { None, |