LibWeb: Return actual callback object from NodeIterator::filter

This commit is contained in:
Luke Wilde 2025-02-24 16:28:53 +00:00 committed by Jelle Raaijmakers
commit 95949ba8f2
Notes: github-actions[bot] 2025-02-24 17:30:16 +00:00
5 changed files with 1000 additions and 2 deletions

View file

@ -136,6 +136,15 @@ JS::ThrowCompletionOr<GC::Ptr<Node>> NodeIterator::traverse(Direction direction)
return candidate; return candidate;
} }
// https://dom.spec.whatwg.org/#concept-traversal-filter
JS::Object* NodeIterator::filter() const
{
if (!m_filter)
return nullptr;
return m_filter->callback().callback;
}
// https://dom.spec.whatwg.org/#concept-node-filter // https://dom.spec.whatwg.org/#concept-node-filter
JS::ThrowCompletionOr<NodeFilter::Result> NodeIterator::filter(Node& node) JS::ThrowCompletionOr<NodeFilter::Result> NodeIterator::filter(Node& node)
{ {

View file

@ -26,7 +26,7 @@ public:
bool pointer_before_reference_node() const { return m_reference.is_before_node; } bool pointer_before_reference_node() const { return m_reference.is_before_node; }
unsigned what_to_show() const { return m_what_to_show; } unsigned what_to_show() const { return m_what_to_show; }
NodeFilter* filter() { return m_filter.ptr(); } JS::Object* filter() const;
JS::ThrowCompletionOr<GC::Ptr<Node>> next_node(); JS::ThrowCompletionOr<GC::Ptr<Node>> next_node();
JS::ThrowCompletionOr<GC::Ptr<Node>> previous_node(); JS::ThrowCompletionOr<GC::Ptr<Node>> previous_node();

View file

@ -8,7 +8,9 @@ interface NodeIterator {
readonly attribute Node referenceNode; readonly attribute Node referenceNode;
readonly attribute boolean pointerBeforeReferenceNode; readonly attribute boolean pointerBeforeReferenceNode;
readonly attribute unsigned long whatToShow; readonly attribute unsigned long whatToShow;
readonly attribute NodeFilter? filter;
// FIXME: `object?` should be `NodeFilter?`, but we don't yet properly support callback interfaces.
readonly attribute object? filter;
Node? nextNode(); Node? nextNode();
Node? previousNode(); Node? previousNode();

View file

@ -0,0 +1,772 @@
Harness status: OK
Found 766 tests
697 Pass
69 Fail
Pass detach() should be a no-op
Pass createNodeIterator() parameter defaults
Pass createNodeIterator() with null as arguments
Pass createNodeIterator() with undefined as arguments
Pass Propagate exception from filter function
Pass Recursive filters need to throw
Pass document.createNodeIterator(paras[0], 0, null)
Pass document.createNodeIterator(paras[0], 0, (function(node) { return true }))
Pass document.createNodeIterator(paras[0], 0, (function(node) { return false }))
Pass document.createNodeIterator(paras[0], 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0], 0xFFFFFFFF, null)
Pass document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0].firstChild, 0, null)
Pass document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, null)
Fail document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1].firstChild, 0, null)
Pass document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, null)
Fail document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[5].firstChild, 0, null)
Pass document.createNodeIterator(paras[5].firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(paras[5].firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(paras[5].firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[5].firstChild, 0xFFFFFFFF, null)
Fail document.createNodeIterator(paras[5].firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(paras[5].firstChild, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(paras[5].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[5].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1, 0, null)
Pass document.createNodeIterator(foreignPara1, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1, 0xFFFFFFFF, null)
Pass document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1.firstChild, 0, null)
Pass document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, null)
Fail document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1, 0, null)
Pass document.createNodeIterator(detachedPara1, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1.firstChild, 0, null)
Pass document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, null)
Fail document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(document, 0, null)
Pass document.createNodeIterator(document, 0, (function(node) { return true }))
Pass document.createNodeIterator(document, 0, (function(node) { return false }))
Pass document.createNodeIterator(document, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(document, 0xFFFFFFFF, null)
Pass document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedDiv, 0, null)
Pass document.createNodeIterator(detachedDiv, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedDiv, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedDiv, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedDiv, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoc, 0, null)
Pass document.createNodeIterator(foreignDoc, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoc, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoc, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoc, 0xFFFFFFFF, null)
Pass document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara2, 0, null)
Pass document.createNodeIterator(foreignPara2, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara2, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara2, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara2, 0xFFFFFFFF, null)
Pass document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoc, 0, null)
Pass document.createNodeIterator(xmlDoc, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoc, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoc, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoc, 0xFFFFFFFF, null)
Pass document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlElement, 0, null)
Pass document.createNodeIterator(xmlElement, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlElement, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlElement, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlElement, 0xFFFFFFFF, null)
Pass document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedTextNode, 0, null)
Pass document.createNodeIterator(detachedTextNode, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedTextNode, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedTextNode, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignTextNode, 0, null)
Pass document.createNodeIterator(foreignTextNode, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignTextNode, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignTextNode, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, null)
Fail document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(processingInstruction, 0, null)
Pass document.createNodeIterator(processingInstruction, 0, (function(node) { return true }))
Pass document.createNodeIterator(processingInstruction, 0, (function(node) { return false }))
Pass document.createNodeIterator(processingInstruction, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(processingInstruction, 0xFFFFFFFF, null)
Pass document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0, null)
Pass document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(comment, 0, null)
Pass document.createNodeIterator(comment, 0, (function(node) { return true }))
Pass document.createNodeIterator(comment, 0, (function(node) { return false }))
Pass document.createNodeIterator(comment, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(comment, 0xFFFFFFFF, null)
Fail document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedComment, 0, null)
Pass document.createNodeIterator(detachedComment, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedComment, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedComment, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedComment, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(docfrag, 0, null)
Pass document.createNodeIterator(docfrag, 0, (function(node) { return true }))
Pass document.createNodeIterator(docfrag, 0, (function(node) { return false }))
Pass document.createNodeIterator(docfrag, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(docfrag, 0xFFFFFFFF, null)
Pass document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(doctype, 0, null)
Pass document.createNodeIterator(doctype, 0, (function(node) { return true }))
Pass document.createNodeIterator(doctype, 0, (function(node) { return false }))
Pass document.createNodeIterator(doctype, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(doctype, 0xFFFFFFFF, null)
Fail document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoctype, 0, null)
Pass document.createNodeIterator(foreignDoctype, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoctype, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoctype, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, null)
Fail document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1], 0, null)
Pass document.createNodeIterator(paras[1], 0, (function(node) { return true }))
Pass document.createNodeIterator(paras[1], 0, (function(node) { return false }))
Pass document.createNodeIterator(paras[1], 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1], 0xFFFFFFFF, null)
Pass document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2, 0, null)
Pass document.createNodeIterator(detachedPara2, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0, null)
Pass document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(testDiv, 0, null)
Pass document.createNodeIterator(testDiv, 0, (function(node) { return true }))
Pass document.createNodeIterator(testDiv, 0, (function(node) { return false }))
Pass document.createNodeIterator(testDiv, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(testDiv, 0xFFFFFFFF, null)
Pass document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlElement, 0, null)
Pass document.createNodeIterator(detachedXmlElement, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlElement, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlElement, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignTextNode, 0, null)
Pass document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlTextNode, 0, null)
Pass document.createNodeIterator(xmlTextNode, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlTextNode, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, null)
Fail document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlTextNode, 0, null)
Pass document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlComment, 0, null)
Pass document.createNodeIterator(xmlComment, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlComment, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlComment, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlComment, 0xFFFFFFFF, null)
Pass document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignComment, 0, null)
Pass document.createNodeIterator(foreignComment, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignComment, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignComment, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignComment, 0xFFFFFFFF, null)
Pass document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignComment, 0, null)
Pass document.createNodeIterator(detachedForeignComment, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignComment, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignComment, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlComment, 0, null)
Pass document.createNodeIterator(detachedXmlComment, 0, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlComment, 0, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlComment, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, null)
Pass document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDocfrag, 0, null)
Pass document.createNodeIterator(foreignDocfrag, 0, (function(node) { return true }))
Pass document.createNodeIterator(foreignDocfrag, 0, (function(node) { return false }))
Pass document.createNodeIterator(foreignDocfrag, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, null)
Pass document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDocfrag, 0, null)
Pass document.createNodeIterator(xmlDocfrag, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlDocfrag, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlDocfrag, 0, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, null)
Pass document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false }))
Pass document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, null)
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoctype, 0, null)
Pass document.createNodeIterator(xmlDoctype, 0, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoctype, 0, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoctype, 0, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, null)
Fail document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return false }))
Fail document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, null)
Fail document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, null)
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' }))
Fail document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null)
Fail document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false }))
Pass document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' }))

View file

@ -0,0 +1,215 @@
<!doctype html>
<title>NodeIterator tests</title>
<link rel="author" title="Aryeh Gregor" href=ayg@aryeh.name>
<meta name=timeout content=long>
<div id=log></div>
<script src=../../resources/testharness.js></script>
<script src=../../resources/testharnessreport.js></script>
<script src=../common.js></script>
<script>
"use strict";
function check_iter(iter, root, whatToShowValue) {
whatToShowValue = whatToShowValue === undefined ? 0xFFFFFFFF : whatToShowValue;
assert_equals(iter.toString(), '[object NodeIterator]', 'toString');
assert_equals(iter.root, root, 'root');
assert_equals(iter.whatToShow, whatToShowValue, 'whatToShow');
assert_equals(iter.filter, null, 'filter');
assert_equals(iter.referenceNode, root, 'referenceNode');
assert_equals(iter.pointerBeforeReferenceNode, true, 'pointerBeforeReferenceNode');
assert_readonly(iter, 'root');
assert_readonly(iter, 'whatToShow');
assert_readonly(iter, 'filter');
assert_readonly(iter, 'referenceNode');
assert_readonly(iter, 'pointerBeforeReferenceNode');
}
test(function() {
var iter = document.createNodeIterator(document);
iter.detach();
iter.detach();
}, "detach() should be a no-op");
test(function() {
var iter = document.createNodeIterator(document);
check_iter(iter, document);
}, "createNodeIterator() parameter defaults");
test(function() {
var iter = document.createNodeIterator(document, null, null);
check_iter(iter, document, 0);
}, "createNodeIterator() with null as arguments");
test(function() {
var iter = document.createNodeIterator(document, undefined, undefined);
check_iter(iter, document);
}, "createNodeIterator() with undefined as arguments");
test(function() {
var err = {name: "failed"};
var iter = document.createNodeIterator(document, NodeFilter.SHOW_ALL,
function() { throw err; });
assert_throws_exactly(err, function() { iter.nextNode() });
}, "Propagate exception from filter function");
test(function() {
var depth = 0;
var iter = document.createNodeIterator(document, NodeFilter.SHOW_ALL,
function() {
if (iter.referenceNode != document && depth == 0) {
depth++;
iter.nextNode();
}
return NodeFilter.FILTER_ACCEPT;
});
iter.nextNode();
iter.nextNode();
assert_throws_dom("InvalidStateError", function() { iter.nextNode() });
depth--;
assert_throws_dom("InvalidStateError", function() { iter.previousNode() });
}, "Recursive filters need to throw");
function testIterator(root, whatToShow, filter) {
var iter = document.createNodeIterator(root, whatToShow, filter);
assert_equals(iter.root, root, ".root");
assert_equals(iter.referenceNode, root, "Initial .referenceNode");
assert_equals(iter.pointerBeforeReferenceNode, true,
".pointerBeforeReferenceNode");
assert_equals(iter.whatToShow, whatToShow, ".whatToShow");
assert_equals(iter.filter, filter, ".filter");
var expectedReferenceNode = root;
var expectedBeforeNode = true;
// "Let node be the value of the referenceNode attribute."
var node = root;
// "Let before node be the value of the pointerBeforeReferenceNode
// attribute."
var beforeNode = true;
var i = 1;
// Each loop iteration runs nextNode() once.
while (node) {
do {
if (!beforeNode) {
// "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."
node = nextNode(node);
if (!isInclusiveDescendant(node, root)) {
node = null;
break;
}
} else {
// "If before node is true, set it to false."
beforeNode = false;
}
// "Filter node and let result be the return value.
//
// "If result is FILTER_ACCEPT, go to the next step in the overall set of
// steps.
//
// "Otherwise, run these substeps again."
if (!((1 << (node.nodeType - 1)) & whatToShow)
|| (filter && filter(node) != NodeFilter.FILTER_ACCEPT)) {
continue;
}
// "Set the referenceNode attribute to node, set the
// pointerBeforeReferenceNode attribute to before node, and return node."
expectedReferenceNode = node;
expectedBeforeNode = beforeNode;
break;
} while (true);
assert_equals(iter.nextNode(), node, ".nextNode() " + i + " time(s)");
assert_equals(iter.referenceNode, expectedReferenceNode,
".referenceNode after nextNode() " + i + " time(s)");
assert_equals(iter.pointerBeforeReferenceNode, expectedBeforeNode,
".pointerBeforeReferenceNode after nextNode() " + i + " time(s)");
i++;
}
// Same but for previousNode() (mostly copy-pasted, oh well)
var iter = document.createNodeIterator(root, whatToShow, filter);
var expectedReferenceNode = root;
var expectedBeforeNode = true;
// "Let node be the value of the referenceNode attribute."
var node = root;
// "Let before node be the value of the pointerBeforeReferenceNode
// attribute."
var beforeNode = true;
var i = 1;
// Each loop iteration runs previousNode() once.
while (node) {
do {
if (beforeNode) {
// "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."
node = previousNode(node);
if (!isInclusiveDescendant(node, root)) {
node = null;
break;
}
} else {
// "If before node is false, set it to true."
beforeNode = true;
}
// "Filter node and let result be the return value.
//
// "If result is FILTER_ACCEPT, go to the next step in the overall set of
// steps.
//
// "Otherwise, run these substeps again."
if (!((1 << (node.nodeType - 1)) & whatToShow)
|| (filter && filter(node) != NodeFilter.FILTER_ACCEPT)) {
continue;
}
// "Set the referenceNode attribute to node, set the
// pointerBeforeReferenceNode attribute to before node, and return node."
expectedReferenceNode = node;
expectedBeforeNode = beforeNode;
break;
} while (true);
assert_equals(iter.previousNode(), node, ".previousNode() " + i + " time(s)");
assert_equals(iter.referenceNode, expectedReferenceNode,
".referenceNode after previousNode() " + i + " time(s)");
assert_equals(iter.pointerBeforeReferenceNode, expectedBeforeNode,
".pointerBeforeReferenceNode after previousNode() " + i + " time(s)");
i++;
}
}
var whatToShows = [
"0",
"0xFFFFFFFF",
"NodeFilter.SHOW_ELEMENT",
"NodeFilter.SHOW_ATTRIBUTE",
"NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT",
];
var callbacks = [
"null",
"(function(node) { return true })",
"(function(node) { return false })",
"(function(node) { return node.nodeName[0] == '#' })",
];
for (var i = 0; i < testNodes.length; i++) {
for (var j = 0; j < whatToShows.length; j++) {
for (var k = 0; k < callbacks.length; k++) {
test(() => {
testIterator(eval(testNodes[i]), eval(whatToShows[j]), eval(callbacks[k]));
}, "document.createNodeIterator(" + testNodes[i] + ", " + whatToShows[j] + ", " + callbacks[k] + ")");
}
}
}
testDiv.style.display = "none";
</script>