From 2701c264ab3a5fce34c3d925fedced193ecc2d19 Mon Sep 17 00:00:00 2001 From: Jinwoo Song Date: Mon, 27 Apr 2015 18:30:31 +0900 Subject: [PATCH 1/5] Implement NodeIterator's attributes - root, whatToShow, and filter --- components/script/dom/nodeiterator.rs | 70 +++++++++++++++++-- .../script/dom/webidls/NodeIterator.webidl | 12 ++-- 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 374fbafab42..0a37dfc3125 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -3,23 +3,81 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::NodeIteratorBinding; +use dom::bindings::codegen::Bindings::NodeIteratorBinding::NodeIteratorMethods; +use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter; use dom::bindings::global::GlobalRef; -use dom::bindings::js::Temporary; +use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::utils::{Reflector, reflect_dom_object}; +use dom::document::{Document, DocumentHelpers}; +use dom::node::{Node}; #[dom_struct] pub struct NodeIterator { - reflector_: Reflector + reflector_: Reflector, + root_node: JS, + what_to_show: u32, + filter: Filter } impl NodeIterator { - fn new_inherited() -> NodeIterator { + fn new_inherited(root_node: JSRef, + what_to_show: u32, + filter: Filter) -> NodeIterator { NodeIterator { - reflector_: Reflector::new() + reflector_: Reflector::new(), + root_node: JS::from_rooted(root_node), + what_to_show: what_to_show, + filter: filter } } - pub fn new(global: GlobalRef) -> Temporary { - reflect_dom_object(box NodeIterator::new_inherited(), global, NodeIteratorBinding::Wrap) + pub fn new_with_filter(document: JSRef, + root_node: JSRef, + what_to_show: u32, + filter: Filter) -> Temporary { + let window = document.window().root(); + reflect_dom_object(box NodeIterator::new_inherited(root_node, what_to_show, filter), + GlobalRef::Window(window.r()), + NodeIteratorBinding::Wrap) + } + + pub fn new(document: JSRef, + root_node: JSRef, + what_to_show: u32, + node_filter: Option) -> Temporary { + let filter = match node_filter { + None => Filter::None, + Some(jsfilter) => Filter::JS(jsfilter) + }; + NodeIterator::new_with_filter(document, root_node, what_to_show, filter) } } + +impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { + // https://dom.spec.whatwg.org/#dom-nodeiterator-root + fn Root(self) -> Temporary { + Temporary::new(self.root_node) + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-whattoshow + fn WhatToShow(self) -> u32 { + self.what_to_show + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-filter + fn GetFilter(self) -> Option { + match self.filter { + Filter::None => None, + Filter::JS(nf) => Some(nf), + Filter::Native(_) => panic!("Cannot convert native node filter to DOM NodeFilter") + } + } + +} + +#[jstraceable] +pub enum Filter { + None, + Native(fn (node: JSRef) -> u16), + JS(NodeFilter) +} diff --git a/components/script/dom/webidls/NodeIterator.webidl b/components/script/dom/webidls/NodeIterator.webidl index 6eb684dd9f9..f1b08c32a14 100644 --- a/components/script/dom/webidls/NodeIterator.webidl +++ b/components/script/dom/webidls/NodeIterator.webidl @@ -12,16 +12,16 @@ // Import from http://hg.mozilla.org/mozilla-central/raw-file/a5a720259d79/dom/webidl/NodeIterator.webidl interface NodeIterator { - // [Constant] - // readonly attribute Node root; + [Constant] + readonly attribute Node root; // [Pure] // readonly attribute Node? referenceNode; // [Pure] // readonly attribute boolean pointerBeforeReferenceNode; - // [Constant] - // readonly attribute unsigned long whatToShow; - // [Constant] - // readonly attribute NodeFilter? filter; + [Constant] + readonly attribute unsigned long whatToShow; + [Constant] + readonly attribute NodeFilter? filter; // [Throws] // Node? nextNode(); From 0e4c792dc5c061ed2b4faad8619ccb63ba30abfe Mon Sep 17 00:00:00 2001 From: Jinwoo Song Date: Tue, 28 Apr 2015 20:34:04 +0900 Subject: [PATCH 2/5] Implement more NodeIterator attribute and methods Just implement the skelectons - referenceNode attribute - nextNode() and previousNode() --- components/script/dom/nodeiterator.rs | 43 +++++++++++++++++++ .../script/dom/webidls/NodeIterator.webidl | 12 +++--- 2 files changed, 49 insertions(+), 6 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, + reference_node: MutNullableJS, 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> { + self.reference_node.get() + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode + fn PreviousNode(self) -> Fallible>> { + self.prev_node() + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode + fn NextNode(self) -> Fallible>> { + self.next_node() + } } +/* +trait PrivateNodeIteratorHelpers { + //fn accept_node(self, node: JSRef) -> Fallible; +} +*/ +pub trait NodeIteratorHelpers { + fn next_node(self) -> Fallible>>; + fn prev_node(self) -> Fallible>>; +} + +impl<'a> NodeIteratorHelpers for JSRef<'a, NodeIterator> { + // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode + fn next_node(self) -> Fallible>> { + Ok(None) + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode + fn prev_node(self) -> Fallible>> { + Ok(None) + } + +} + + #[jstraceable] pub enum Filter { None, diff --git a/components/script/dom/webidls/NodeIterator.webidl b/components/script/dom/webidls/NodeIterator.webidl index f1b08c32a14..6c25bf224f3 100644 --- a/components/script/dom/webidls/NodeIterator.webidl +++ b/components/script/dom/webidls/NodeIterator.webidl @@ -14,8 +14,8 @@ interface NodeIterator { [Constant] readonly attribute Node root; - // [Pure] - // readonly attribute Node? referenceNode; + [Pure] + readonly attribute Node? referenceNode; // [Pure] // readonly attribute boolean pointerBeforeReferenceNode; [Constant] @@ -23,10 +23,10 @@ interface NodeIterator { [Constant] readonly attribute NodeFilter? filter; - // [Throws] - // Node? nextNode(); - // [Throws] - // Node? previousNode(); + [Throws] + Node? nextNode(); + [Throws] + Node? previousNode(); // void detach(); }; From 4e8005cd5bc033849e16dd3c164f4d4582c61b5c Mon Sep 17 00:00:00 2001 From: Jinwoo Song Date: Wed, 29 Apr 2015 18:08:37 +0900 Subject: [PATCH 3/5] Implement Document.createNodeIterator and rebase patch --- components/script/dom/document.rs | 7 +++++++ components/script/dom/nodeiterator.rs | 12 +++++------- components/script/dom/webidls/Document.webidl | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 3d615df43de..b8ed26bbc90 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -58,6 +58,7 @@ use dom::keyboardevent::KeyboardEvent; use dom::messageevent::MessageEvent; use dom::node::{self, Node, NodeHelpers, NodeTypeId, CloneChildrenFlag, NodeDamage, window_from_node}; use dom::nodelist::NodeList; +use dom::nodeiterator::NodeIterator; use dom::text::Text; use dom::processinginstruction::ProcessingInstruction; use dom::range::Range; @@ -1363,6 +1364,12 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { Range::new_with_doc(self) } + // https://dom.spec.whatwg.org/#dom-document-createnodeiterator + fn CreateNodeIterator(self, root: JSRef, whatToShow: u32, filter: Option) + -> Temporary { + NodeIterator::new(self, root, whatToShow, filter) + } + // https://dom.spec.whatwg.org/#dom-document-createtreewalker fn CreateTreeWalker(self, root: JSRef, whatToShow: u32, filter: Option) -> Temporary { diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 33e630bd8cf..5d2850228fe 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -7,18 +7,16 @@ 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::js::{JS, JSRef, MutNullableHeap, Temporary, Rootable}; 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, - reference_node: MutNullableJS, + reference_node: MutNullableHeap>, what_to_show: u32, filter: Filter } @@ -30,7 +28,7 @@ impl NodeIterator { NodeIterator { reflector_: Reflector::new(), root_node: JS::from_rooted(root_node), - reference_node: Default::default(), + reference_node: MutNullableHeap::new(Some(JS::from_rooted(root_node))), what_to_show: what_to_show, filter: filter } @@ -61,7 +59,7 @@ impl NodeIterator { impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { // https://dom.spec.whatwg.org/#dom-nodeiterator-root fn Root(self) -> Temporary { - Temporary::new(self.root_node) + Temporary::from_rooted(self.root_node) } // https://dom.spec.whatwg.org/#dom-nodeiterator-whattoshow @@ -80,7 +78,7 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { // https://dom.spec.whatwg.org/#dom-nodeiterator-referencenode fn GetReferenceNode(self) -> Option> { - self.reference_node.get() + self.reference_node.get().map(Temporary::from_rooted) } // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index 581ad401f6d..687650a6c3a 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -58,8 +58,8 @@ interface Document : Node { Range createRange(); // NodeFilter.SHOW_ALL = 0xFFFFFFFF - // [NewObject] - // NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); + [NewObject] + NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); }; From cb2bdf19778a317413a385b28cc95dfbc864c71f Mon Sep 17 00:00:00 2001 From: Jinwoo Song Date: Wed, 6 May 2015 21:13:14 +0900 Subject: [PATCH 4/5] Implement nextNode(), previousNode() and detach() in NodeIterator First patch to resolve #1235. We need more implementation for handling node removals, and I'll implement in next patch. --- components/script/dom/nodeiterator.rs | 201 +- .../script/dom/webidls/NodeIterator.webidl | 6 +- tests/wpt/metadata/dom/interfaces.html.ini | 57 +- .../dom/traversal/NodeIterator.html.ini | 2224 ----------------- 4 files changed, 199 insertions(+), 2289 deletions(-) diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 5d2850228fe..531e98c724c 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -2,23 +2,29 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use dom::bindings::callback::ExceptionHandling::Rethrow; use dom::bindings::codegen::Bindings::NodeIteratorBinding; use dom::bindings::codegen::Bindings::NodeIteratorBinding::NodeIteratorMethods; +use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter; +use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JS, JSRef, MutNullableHeap, Temporary, Rootable}; +use dom::bindings::js::{JS, JSRef, MutNullableHeap, OptionalRootable, Temporary, Rootable}; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::document::{Document, DocumentHelpers}; -use dom::node::{Node}; +use dom::node::Node; + +use std::cell::Cell; #[dom_struct] pub struct NodeIterator { reflector_: Reflector, root_node: JS, reference_node: MutNullableHeap>, + pointer_before_reference_node: Cell, what_to_show: u32, - filter: Filter + filter: Filter, } impl NodeIterator { @@ -29,6 +35,7 @@ impl NodeIterator { reflector_: Reflector::new(), root_node: JS::from_rooted(root_node), reference_node: MutNullableHeap::new(Some(JS::from_rooted(root_node))), + pointer_before_reference_node: Cell::new(true), what_to_show: what_to_show, filter: filter } @@ -81,6 +88,10 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { self.reference_node.get().map(Temporary::from_rooted) } + fn PointerBeforeReferenceNode(self) -> bool { + self.pointer_before_reference_node.get() + } + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode fn PreviousNode(self) -> Fallible>> { self.prev_node() @@ -90,31 +101,205 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { fn NextNode(self) -> Fallible>> { self.next_node() } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-detach + fn Detach(self) { + // This method intentionally left blank. + } } -/* trait PrivateNodeIteratorHelpers { - //fn accept_node(self, node: JSRef) -> Fallible; + fn is_root_node(self, node: JSRef) -> bool; + fn first_following_node_not_following_root(self, node: JSRef) -> Option>; + fn first_preceding_node_not_preceding_root(self, node: JSRef) -> Option>; + fn accept_node(self, node: JSRef) -> Fallible; } -*/ + +impl<'a> PrivateNodeIteratorHelpers for JSRef<'a, NodeIterator> { + + // https://dom.spec.whatwg.org/#concept-tree-following + fn first_following_node_not_following_root(self, node: JSRef) + -> Option> { + // "An object A is following an object B if A and B are in the same tree + // and A comes after B in tree order." + match node.GetFirstChild() { + Some (child) => { return Some(Temporary::from_rooted(child.root().get_unsound_ref_forever())) }, + None => {} + } + match node.GetNextSibling() { + None => { + let mut candidate = node; + while !self.is_root_node(candidate) && candidate.GetNextSibling().is_none() { + match candidate.GetParentNode() { + None => + // This can happen if the user set the current node to somewhere + // outside of the tree rooted at the original root. + return None, + Some(n) => { candidate = n.root().get_unsound_ref_forever(); } + } + } + if self.is_root_node(candidate) { + None + } else { + candidate.GetNextSibling() + } + }, + it => { + if self.is_root_node(node) { + return None + } else { + it + } + } + } + } + + // https://dom.spec.whatwg.org/#concept-tree-preceding + fn first_preceding_node_not_preceding_root(self, node: JSRef) + -> Option> { + // "An object A is preceding an object B if A and B are in the same tree + // and A comes before B in tree order." + match node.GetPreviousSibling() { + None => { + let mut candidate = node; + while !self.is_root_node(candidate) && candidate.GetPreviousSibling().is_none() { + match candidate.GetParentNode() { + None => + // This can happen if the user set the current node to somewhere + // outside of the tree rooted at the original root. + return None, + Some(n) => { candidate = n.root().get_unsound_ref_forever(); } + } + } + if self.is_root_node(candidate) { + None + } else { + candidate.GetPreviousSibling() + } + }, + it => { + let candidate = node; + if self.is_root_node(candidate) { + return None + } else { + it + } + } + } + } + + // https://dom.spec.whatwg.org/#concept-node-filter + fn accept_node(self, node: JSRef) -> Fallible { + // "To filter node run these steps:" + // "1. Let n be node's nodeType attribute value minus 1." + let n = node.NodeType() - 1; + // "2. If the nth bit (where 0 is the least significant bit) of whatToShow is not set, + // return FILTER_SKIP." + if (self.what_to_show & (1 << n)) == 0 { + return Ok(NodeFilterConstants::FILTER_SKIP) + } + // "3. If filter is null, return FILTER_ACCEPT." + // "4. Let result be the return value of invoking filter." + // "5. If an exception was thrown, re-throw the exception." + // "6. Return result." + match self.filter { + Filter::None => Ok(NodeFilterConstants::FILTER_ACCEPT), + Filter::Native(f) => Ok((f)(node)), + Filter::JS(callback) => callback.AcceptNode_(self, node, Rethrow) + } + } + + fn is_root_node(self, node: JSRef) -> bool { + JS::from_rooted(node) == self.root_node + } +} + pub trait NodeIteratorHelpers { fn next_node(self) -> Fallible>>; fn prev_node(self) -> Fallible>>; + fn traverse(self, direction: Direction) -> Fallible>>; } impl<'a> NodeIteratorHelpers for JSRef<'a, NodeIterator> { // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode fn next_node(self) -> Fallible>> { - Ok(None) + self.traverse(Direction::Next) } // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode fn prev_node(self) -> Fallible>> { - Ok(None) + self.traverse(Direction::Previous) } + fn traverse(self, direction: Direction) -> Fallible>> { + // "1. Let node be the value of the referenceNode attribute." + let mut node = self.reference_node.get(); + // "2. Let before node be the value of the pointerBeforeReferenceNode attribute." + let mut before_node = self.pointer_before_reference_node.get(); + // "3. Run these substeps: + loop { + match direction { + // "1. If direction is next" + Direction::Next => { + // "If before node is false, let node be the first node following node in the iterator collection. + // If there is no such node return null. If before node is true, set it to false." + if !before_node { + match node { + None => return Ok(None), + Some(n) => { + match self.first_following_node_not_following_root(n.root().get_unsound_ref_forever()) { + None => return Ok(None), + Some(n) => node = Some(JS::from_rooted(n)) + } + } + } + } + else { + before_node = false; + } + } + // "If direction is previous" + Direction::Previous => { + // "If before node is true, let node be the first node preceding node in the iterator collection. + // If there is no such node return null. If before node is false, set it to true. + if before_node { + match node { + None => return Ok(None), + Some(n) => { + match self.first_preceding_node_not_preceding_root(n.root().get_unsound_ref_forever()) { + None => return Ok(None), + Some(n) => node = Some(JS::from_rooted(n)) + } + } + } + } + else { + before_node = true; + } + } + } + // "2. Filter node and let result be the return value." + let result = try!(self.accept_node(node.unwrap().root().get_unsound_ref_forever())); + + // "3. If result is FILTER_ACCEPT, go to the next step in the overall set of steps. Otherwise, run these substeps again." + match result { + NodeFilterConstants::FILTER_ACCEPT => break, + _ => {} + } + + } + // "4. Set the referenceNode attribute to node, set the pointerBeforeReferenceNode attribute to before node, and return node." + self.reference_node.set(Some(JS::from_rooted(node.unwrap()))); + self.pointer_before_reference_node.set(before_node); + + Ok(Some(Temporary::from_rooted(node.unwrap()))) + } } +pub enum Direction { + Next, + Previous +} #[jstraceable] pub enum Filter { diff --git a/components/script/dom/webidls/NodeIterator.webidl b/components/script/dom/webidls/NodeIterator.webidl index 6c25bf224f3..bd5970747ca 100644 --- a/components/script/dom/webidls/NodeIterator.webidl +++ b/components/script/dom/webidls/NodeIterator.webidl @@ -16,8 +16,8 @@ interface NodeIterator { readonly attribute Node root; [Pure] readonly attribute Node? referenceNode; - // [Pure] - // readonly attribute boolean pointerBeforeReferenceNode; + [Pure] + readonly attribute boolean pointerBeforeReferenceNode; [Constant] readonly attribute unsigned long whatToShow; [Constant] @@ -28,5 +28,5 @@ interface NodeIterator { [Throws] Node? previousNode(); - // void detach(); + void detach(); }; diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index d09b4589404..c375bc4db1c 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -132,10 +132,10 @@ [Document interface: xmlDoc must inherit property "origin" with the proper type (3)] expected: FAIL - [Document interface: xmlDoc must inherit property "createNodeIterator" with the proper type (25)] + [Document interface: calling prepend([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError] expected: FAIL - [Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError] + [Document interface: calling append([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError] expected: FAIL [Document interface: xmlDoc must inherit property "query" with the proper type (34)] @@ -363,58 +363,7 @@ [Range interface: calling surroundContents(Node) on detachedRange with too few arguments must throw TypeError] expected: FAIL - [NodeIterator interface: attribute root] - expected: FAIL - - [NodeIterator interface: attribute referenceNode] - expected: FAIL - - [NodeIterator interface: attribute pointerBeforeReferenceNode] - expected: FAIL - - [NodeIterator interface: attribute whatToShow] - expected: FAIL - - [NodeIterator interface: attribute filter] - expected: FAIL - - [NodeIterator interface: operation nextNode()] - expected: FAIL - - [NodeIterator interface: operation previousNode()] - expected: FAIL - - [NodeIterator interface: operation detach()] - expected: FAIL - - [NodeIterator must be primary interface of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)] - expected: FAIL - - [Stringification of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "root" with the proper type (0)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "referenceNode" with the proper type (1)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "pointerBeforeReferenceNode" with the proper type (2)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "whatToShow" with the proper type (3)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "filter" with the proper type (4)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (5)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (6)] - expected: FAIL - - [NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "detach" with the proper type (7)] + [NodeIterator interface object length] expected: FAIL [TreeWalker interface object length] diff --git a/tests/wpt/metadata/dom/traversal/NodeIterator.html.ini b/tests/wpt/metadata/dom/traversal/NodeIterator.html.ini index 4e3f2601ef5..a7cbb64c070 100644 --- a/tests/wpt/metadata/dom/traversal/NodeIterator.html.ini +++ b/tests/wpt/metadata/dom/traversal/NodeIterator.html.ini @@ -1,2231 +1,7 @@ [NodeIterator.html] type: testharness - [detach() should be a no-op] - expected: FAIL - - [createNodeIterator() parameter defaults] - expected: FAIL [Propagate exception from filter function] expected: FAIL - [document.createNodeIterator(paras[0\], 0, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[0\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(document, 0, null)] - expected: FAIL - - [document.createNodeIterator(document, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(document, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(document, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(document, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0, null)] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(comment, 0, null)] - expected: FAIL - - [document.createNodeIterator(comment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(comment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(comment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(comment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0, null)] - expected: FAIL - - [document.createNodeIterator(docfrag, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0, null)] - expected: FAIL - - [document.createNodeIterator(doctype, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(paras[1\], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0, null)] - expected: FAIL - - [document.createNodeIterator(testDiv, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0, null)] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))] - expected: FAIL - - [document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0\] == '#' }))] - expected: FAIL From db25be7bf61198999864559e302d96d860914abb Mon Sep 17 00:00:00 2001 From: Jinwoo Song Date: Thu, 21 May 2015 16:06:14 +0900 Subject: [PATCH 5/5] Update NodeIterator code to apply review comments. --- components/script/dom/document.rs | 2 +- components/script/dom/node.rs | 133 +++++++- components/script/dom/nodeiterator.rs | 292 +++++++----------- .../script/dom/webidls/NodeIterator.webidl | 2 +- tests/wpt/metadata/dom/interfaces.html.ini | 9 - .../wpt/metadata/html/dom/interfaces.html.ini | 6 - 6 files changed, 238 insertions(+), 206 deletions(-) diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index b8ed26bbc90..ad7af5562f9 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1364,7 +1364,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { Range::new_with_doc(self) } - // https://dom.spec.whatwg.org/#dom-document-createnodeiterator + // https://dom.spec.whatwg.org/#dom-document-createnodeiteratorroot-whattoshow-filter fn CreateNodeIterator(self, root: JSRef, whatToShow: u32, filter: Option) -> Temporary { NodeIterator::new(self, root, whatToShow, filter) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 50f4db71f8f..a2a9e159f01 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -426,6 +426,9 @@ pub trait NodeHelpers { fn child_elements(self) -> ChildElementIterator; fn following_siblings(self) -> NodeSiblingIterator; fn preceding_siblings(self) -> ReverseSiblingIterator; + fn following_nodes(self, root: JSRef) -> FollowingNodeIterator; + fn preceding_nodes(self, root: JSRef) -> PrecedingNodeIterator; + fn descending_last_children(self) -> LastChildIterator; fn is_in_doc(self) -> bool; fn is_inclusive_ancestor_of(self, parent: JSRef) -> bool; fn is_parent_of(self, child: JSRef) -> bool; @@ -785,6 +788,26 @@ impl<'a> NodeHelpers for JSRef<'a, Node> { } } + fn following_nodes(self, root: JSRef) -> FollowingNodeIterator { + FollowingNodeIterator { + current: Some(Temporary::from_rooted(self)), + root: Temporary::from_rooted(root), + } + } + + fn preceding_nodes(self, root: JSRef) -> PrecedingNodeIterator { + PrecedingNodeIterator { + current: Some(Temporary::from_rooted(self)), + root: Temporary::from_rooted(root), + } + } + + fn descending_last_children(self) -> LastChildIterator { + LastChildIterator { + current: self.GetLastChild(), + } + } + fn is_parent_of(self, child: JSRef) -> bool { match child.parent_node.get().root() { Some(ref parent) => parent.r() == self, @@ -922,7 +945,6 @@ impl<'a> NodeHelpers for JSRef<'a, Node> { Ok(NodeList::new_simple_list(window.r(), iter)) } - fn ancestors(self) -> AncestorIterator { AncestorIterator { current: self.GetParentNode() @@ -1236,6 +1258,114 @@ impl Iterator for ReverseSiblingIterator { } } +pub struct FollowingNodeIterator { + current: Option>, + root: Temporary, +} + +impl Iterator for FollowingNodeIterator { + type Item = Temporary; + + // https://dom.spec.whatwg.org/#concept-tree-following + fn next(&mut self) -> Option> { + let current = match self.current.take() { + None => return None, + Some(current) => current, + }; + + let node = current.root(); + if let Some(first_child) = node.r().GetFirstChild() { + self.current = Some(first_child); + return node.r().GetFirstChild() + } + + if self.root == current { + self.current = None; + return None; + } + + if let Some(next_sibling) = node.r().GetNextSibling() { + self.current = Some(next_sibling); + return node.r().GetNextSibling() + } + + for ancestor in node.r().inclusive_ancestors() { + if self.root == ancestor { + break; + } + if let Some(next_sibling) = ancestor.root().r().GetNextSibling() { + self.current = Some(next_sibling); + return ancestor.root().r().GetNextSibling() + } + } + self.current = None; + return None + } +} + +pub struct PrecedingNodeIterator { + current: Option>, + root: Temporary, +} + +impl Iterator for PrecedingNodeIterator { + type Item = Temporary; + + // https://dom.spec.whatwg.org/#concept-tree-preceding + fn next(&mut self) -> Option> { + let current = match self.current.take() { + None => return None, + Some(current) => current, + }; + + if self.root == current { + self.current = None; + return None + } + + let node = current.root(); + if let Some(previous_sibling) = node.r().GetPreviousSibling() { + if self.root == previous_sibling { + self.current = None; + return None + } + + if let Some(last_child) = previous_sibling.root().r().descending_last_children().last() { + self.current = Some(last_child); + return previous_sibling.root().r().descending_last_children().last() + } + + self.current = Some(previous_sibling); + return node.r().GetPreviousSibling() + }; + + if let Some(parent_node) = node.r().GetParentNode() { + self.current = Some(parent_node); + return node.r().GetParentNode() + } + + self.current = None; + return None + } +} + +pub struct LastChildIterator { + current: Option>, +} + +impl Iterator for LastChildIterator { + type Item = Temporary; + + fn next(&mut self) -> Option> { + let current = match self.current.take() { + None => return None, + Some(current) => current, + }.root(); + self.current = current.r().GetLastChild(); + Some(Temporary::from_rooted(current.r())) + } +} + pub struct AncestorIterator { current: Option>, } @@ -1298,7 +1428,6 @@ impl Iterator for TreeIterator { } } - /// Specifies whether children must be recursively cloned or not. #[derive(Copy, Clone, PartialEq)] pub enum CloneChildrenFlag { diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 531e98c724c..42c51ee8c55 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -10,10 +10,10 @@ use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter; use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JS, JSRef, MutNullableHeap, OptionalRootable, Temporary, Rootable}; +use dom::bindings::js::{JS, JSRef, MutHeap, OptionalRootable, Temporary, Rootable, RootedReference}; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::document::{Document, DocumentHelpers}; -use dom::node::Node; +use dom::node::{Node, NodeHelpers}; use std::cell::Cell; @@ -21,7 +21,7 @@ use std::cell::Cell; pub struct NodeIterator { reflector_: Reflector, root_node: JS, - reference_node: MutNullableHeap>, + reference_node: MutHeap>, pointer_before_reference_node: Cell, what_to_show: u32, filter: Filter, @@ -29,12 +29,12 @@ pub struct NodeIterator { impl NodeIterator { fn new_inherited(root_node: JSRef, - what_to_show: u32, - filter: Filter) -> NodeIterator { + what_to_show: u32, + filter: Filter) -> NodeIterator { NodeIterator { reflector_: Reflector::new(), root_node: JS::from_rooted(root_node), - reference_node: MutNullableHeap::new(Some(JS::from_rooted(root_node))), + reference_node: MutHeap::new(JS::from_rooted(root_node)), pointer_before_reference_node: Cell::new(true), what_to_show: what_to_show, filter: filter @@ -57,7 +57,7 @@ impl NodeIterator { node_filter: Option) -> Temporary { let filter = match node_filter { None => Filter::None, - Some(jsfilter) => Filter::JS(jsfilter) + Some(jsfilter) => Filter::Callback(jsfilter) }; NodeIterator::new_with_filter(document, root_node, what_to_show, filter) } @@ -78,28 +78,111 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { fn GetFilter(self) -> Option { match self.filter { Filter::None => None, - Filter::JS(nf) => Some(nf), + Filter::Callback(nf) => Some(nf), Filter::Native(_) => panic!("Cannot convert native node filter to DOM NodeFilter") } } // https://dom.spec.whatwg.org/#dom-nodeiterator-referencenode - fn GetReferenceNode(self) -> Option> { - self.reference_node.get().map(Temporary::from_rooted) + fn ReferenceNode(self) -> Temporary { + Temporary::from_rooted(self.reference_node.get()) } + // https://dom.spec.whatwg.org/#dom-nodeiterator-pointerbeforereferencenode fn PointerBeforeReferenceNode(self) -> bool { self.pointer_before_reference_node.get() } - // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode - fn PreviousNode(self) -> Fallible>> { - self.prev_node() - } - // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode fn NextNode(self) -> Fallible>> { - self.next_node() + // https://dom.spec.whatwg.org/#concept-NodeIterator-traverse + // Step 1. + let node = self.reference_node.get().root(); + + // Step 2. + let mut before_node = self.pointer_before_reference_node.get(); + + // Step 3-1. + if before_node { + before_node = false; + + // Step 3-2. + let result = try!(self.accept_node(node.r())); + + // Step 3-3. + if result == NodeFilterConstants::FILTER_ACCEPT { + // Step 4. + self.reference_node.set(JS::from_rooted(node.r())); + self.pointer_before_reference_node.set(before_node); + + return Ok(Some(Temporary::from_rooted(node.r()))); + } + } + + // Step 3-1. + for following_node in node.r().following_nodes(self.root_node.root().r()) { + let following_node = following_node.root(); + + // Step 3-2. + let result = try!(self.accept_node(following_node.r())); + + // Step 3-3. + if result == NodeFilterConstants::FILTER_ACCEPT { + // Step 4. + self.reference_node.set(JS::from_rooted(following_node.r())); + self.pointer_before_reference_node.set(before_node); + + return Ok(Some(Temporary::from_rooted(following_node.r()))); + } + } + + return Ok(None); + } + + // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode + fn PreviousNode(self) -> Fallible>> { + // https://dom.spec.whatwg.org/#concept-NodeIterator-traverse + // Step 1. + let node = self.reference_node.get().root(); + + // Step 2. + let mut before_node = self.pointer_before_reference_node.get(); + + // Step 3-1. + if !before_node { + before_node = true; + + // Step 3-2. + let result = try!(self.accept_node(node.r())); + + // Step 3-3. + if result == NodeFilterConstants::FILTER_ACCEPT { + // Step 4. + self.reference_node.set(JS::from_rooted(node.r())); + self.pointer_before_reference_node.set(before_node); + + return Ok(Some(Temporary::from_rooted(node.r()))); + } + } + + // Step 3-1. + for preceding_node in node.r().preceding_nodes(self.root_node.root().r()) { + let preceding_node = preceding_node.root(); + + // Step 3-2. + let result = try!(self.accept_node(preceding_node.r())); + + // Step 3-3. + if result == NodeFilterConstants::FILTER_ACCEPT { + // Step 4. + self.reference_node.set(JS::from_rooted(preceding_node.r())); + self.pointer_before_reference_node.set(before_node); + + return Ok(Some(Temporary::from_rooted(preceding_node.r()))); + } + } + + return Ok(None); } // https://dom.spec.whatwg.org/#dom-nodeiterator-detach @@ -109,103 +192,24 @@ impl<'a> NodeIteratorMethods for JSRef<'a, NodeIterator> { } trait PrivateNodeIteratorHelpers { - fn is_root_node(self, node: JSRef) -> bool; - fn first_following_node_not_following_root(self, node: JSRef) -> Option>; - fn first_preceding_node_not_preceding_root(self, node: JSRef) -> Option>; fn accept_node(self, node: JSRef) -> Fallible; + fn is_root_node(self, node: JSRef) -> bool; } impl<'a> PrivateNodeIteratorHelpers for JSRef<'a, NodeIterator> { - - // https://dom.spec.whatwg.org/#concept-tree-following - fn first_following_node_not_following_root(self, node: JSRef) - -> Option> { - // "An object A is following an object B if A and B are in the same tree - // and A comes after B in tree order." - match node.GetFirstChild() { - Some (child) => { return Some(Temporary::from_rooted(child.root().get_unsound_ref_forever())) }, - None => {} - } - match node.GetNextSibling() { - None => { - let mut candidate = node; - while !self.is_root_node(candidate) && candidate.GetNextSibling().is_none() { - match candidate.GetParentNode() { - None => - // This can happen if the user set the current node to somewhere - // outside of the tree rooted at the original root. - return None, - Some(n) => { candidate = n.root().get_unsound_ref_forever(); } - } - } - if self.is_root_node(candidate) { - None - } else { - candidate.GetNextSibling() - } - }, - it => { - if self.is_root_node(node) { - return None - } else { - it - } - } - } - } - - // https://dom.spec.whatwg.org/#concept-tree-preceding - fn first_preceding_node_not_preceding_root(self, node: JSRef) - -> Option> { - // "An object A is preceding an object B if A and B are in the same tree - // and A comes before B in tree order." - match node.GetPreviousSibling() { - None => { - let mut candidate = node; - while !self.is_root_node(candidate) && candidate.GetPreviousSibling().is_none() { - match candidate.GetParentNode() { - None => - // This can happen if the user set the current node to somewhere - // outside of the tree rooted at the original root. - return None, - Some(n) => { candidate = n.root().get_unsound_ref_forever(); } - } - } - if self.is_root_node(candidate) { - None - } else { - candidate.GetPreviousSibling() - } - }, - it => { - let candidate = node; - if self.is_root_node(candidate) { - return None - } else { - it - } - } - } - } - // https://dom.spec.whatwg.org/#concept-node-filter fn accept_node(self, node: JSRef) -> Fallible { - // "To filter node run these steps:" - // "1. Let n be node's nodeType attribute value minus 1." + // Step 1. let n = node.NodeType() - 1; - // "2. If the nth bit (where 0 is the least significant bit) of whatToShow is not set, - // return FILTER_SKIP." + // Step 2. if (self.what_to_show & (1 << n)) == 0 { return Ok(NodeFilterConstants::FILTER_SKIP) } - // "3. If filter is null, return FILTER_ACCEPT." - // "4. Let result be the return value of invoking filter." - // "5. If an exception was thrown, re-throw the exception." - // "6. Return result." + // Step 3-5. match self.filter { Filter::None => Ok(NodeFilterConstants::FILTER_ACCEPT), Filter::Native(f) => Ok((f)(node)), - Filter::JS(callback) => callback.AcceptNode_(self, node, Rethrow) + Filter::Callback(callback) => callback.AcceptNode_(self, node, Rethrow) } } @@ -214,96 +218,10 @@ impl<'a> PrivateNodeIteratorHelpers for JSRef<'a, NodeIterator> { } } -pub trait NodeIteratorHelpers { - fn next_node(self) -> Fallible>>; - fn prev_node(self) -> Fallible>>; - fn traverse(self, direction: Direction) -> Fallible>>; -} - -impl<'a> NodeIteratorHelpers for JSRef<'a, NodeIterator> { - // https://dom.spec.whatwg.org/#dom-nodeiterator-nextnode - fn next_node(self) -> Fallible>> { - self.traverse(Direction::Next) - } - - // https://dom.spec.whatwg.org/#dom-nodeiterator-previousnode - fn prev_node(self) -> Fallible>> { - self.traverse(Direction::Previous) - } - - fn traverse(self, direction: Direction) -> Fallible>> { - // "1. Let node be the value of the referenceNode attribute." - let mut node = self.reference_node.get(); - // "2. Let before node be the value of the pointerBeforeReferenceNode attribute." - let mut before_node = self.pointer_before_reference_node.get(); - // "3. Run these substeps: - loop { - match direction { - // "1. If direction is next" - Direction::Next => { - // "If before node is false, let node be the first node following node in the iterator collection. - // If there is no such node return null. If before node is true, set it to false." - if !before_node { - match node { - None => return Ok(None), - Some(n) => { - match self.first_following_node_not_following_root(n.root().get_unsound_ref_forever()) { - None => return Ok(None), - Some(n) => node = Some(JS::from_rooted(n)) - } - } - } - } - else { - before_node = false; - } - } - // "If direction is previous" - Direction::Previous => { - // "If before node is true, let node be the first node preceding node in the iterator collection. - // If there is no such node return null. If before node is false, set it to true. - if before_node { - match node { - None => return Ok(None), - Some(n) => { - match self.first_preceding_node_not_preceding_root(n.root().get_unsound_ref_forever()) { - None => return Ok(None), - Some(n) => node = Some(JS::from_rooted(n)) - } - } - } - } - else { - before_node = true; - } - } - } - // "2. Filter node and let result be the return value." - let result = try!(self.accept_node(node.unwrap().root().get_unsound_ref_forever())); - - // "3. If result is FILTER_ACCEPT, go to the next step in the overall set of steps. Otherwise, run these substeps again." - match result { - NodeFilterConstants::FILTER_ACCEPT => break, - _ => {} - } - - } - // "4. Set the referenceNode attribute to node, set the pointerBeforeReferenceNode attribute to before node, and return node." - self.reference_node.set(Some(JS::from_rooted(node.unwrap()))); - self.pointer_before_reference_node.set(before_node); - - Ok(Some(Temporary::from_rooted(node.unwrap()))) - } -} - -pub enum Direction { - Next, - Previous -} #[jstraceable] pub enum Filter { None, Native(fn (node: JSRef) -> u16), - JS(NodeFilter) + Callback(NodeFilter) } diff --git a/components/script/dom/webidls/NodeIterator.webidl b/components/script/dom/webidls/NodeIterator.webidl index bd5970747ca..73a28040715 100644 --- a/components/script/dom/webidls/NodeIterator.webidl +++ b/components/script/dom/webidls/NodeIterator.webidl @@ -15,7 +15,7 @@ interface NodeIterator { [Constant] readonly attribute Node root; [Pure] - readonly attribute Node? referenceNode; + readonly attribute Node referenceNode; [Pure] readonly attribute boolean pointerBeforeReferenceNode; [Constant] diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index c375bc4db1c..fce2f3ccc3f 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -102,9 +102,6 @@ [Document interface: attribute origin] expected: FAIL - [Document interface: operation createNodeIterator(Node,unsigned long,NodeFilter)] - expected: FAIL - [Document interface: operation query(DOMString)] expected: FAIL @@ -132,12 +129,6 @@ [Document interface: xmlDoc must inherit property "origin" with the proper type (3)] expected: FAIL - [Document interface: calling prepend([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError] - expected: FAIL - - [Document interface: calling append([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError] - expected: FAIL - [Document interface: xmlDoc must inherit property "query" with the proper type (34)] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 6b4044775cd..edd9b210e49 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1032,12 +1032,6 @@ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "origin" with the proper type (3)] expected: FAIL - [Document interface: document.implementation.createDocument(null, "", null) must inherit property "createNodeIterator" with the proper type (25)] - expected: FAIL - - [Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError] - expected: FAIL - [Document interface: document.implementation.createDocument(null, "", null) must inherit property "styleSheets" with the proper type (27)] expected: FAIL