<!DOCTYPE html>
<html>
<!--
Test adapted from https://dxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js
-->
<head>
<title>TreeWalker: previousSiblingLastChildSkip</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/assert-node.js"></script>
<div id=log></div>
</head>
<body>
<p>Test that previousSibling properly respects the filter.</p>
<script>
var testElement;
setup(function() {
    testElement = document.createElement("div");
    testElement.id = 'root';
    // testElement.innerHTML='<div id="A1"><div id="B1"><div id="C1"></div><div id="C2"><div id="D1"></div><div id="D2"></div></div></div><div id="B2"><div id="C3"></div><div id="C4"></div></div></div>';
    // testElement.innerHTML='
    // <div id="A1">
    //   <div id="B1">
    //     <div id="C1">
    //     </div>
    //     <div id="C2">
    //       <div id="D1">
    //       </div>
    //       <div id="D2">
    //       </div>
    //     </div>
    //   </div>
    //   <div id="B2">
    //     <div id="C3">
    //     </div>
    //     <div id="C4">
    //     </div>
    //   </div>
    // </div>';

    // XXX for Servo, build the tree without using innerHTML
    var a1 = document.createElement("div"); a1.id = "A1";
    var b1 = document.createElement("div"); b1.id = "B1";
    var b2 = document.createElement("div"); b2.id = "B2";
    var c1 = document.createElement("div"); c1.id = "C1";
    var c2 = document.createElement("div"); c2.id = "C2";
    var c3 = document.createElement("div"); c3.id = "C3";
    var c4 = document.createElement("div"); c4.id = "C4";
    var d1 = document.createElement("div"); d1.id = "D1";
    var d2 = document.createElement("div"); d2.id = "D2";

    testElement.appendChild(a1);
    a1.appendChild(b1);
    a1.appendChild(b2);
    b1.appendChild(c1);
    b1.appendChild(c2);
    b2.appendChild(c3);
    b2.appendChild(c4);
    c2.appendChild(d1);
    c2.appendChild(d2);
});

test(function()
{
    function filter(node)
    {
        if (node.id == "B1")
            return NodeFilter.FILTER_SKIP;
        return NodeFilter.FILTER_ACCEPT;
    }

    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
    assert_node(walker.currentNode, { type: Element, id: 'root' });
    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
    assert_node(walker.currentNode, { type: Element, id: 'A1' });
    assert_node(walker.nextNode(), { type: Element, id: 'C1' });
    assert_node(walker.currentNode, { type: Element, id: 'C1' });
    assert_node(walker.nextNode(), { type: Element, id: 'C2' });
    assert_node(walker.currentNode, { type: Element, id: 'C2' });
    assert_node(walker.nextNode(), { type: Element, id: 'D1' });
    assert_node(walker.currentNode, { type: Element, id: 'D1' });
    assert_node(walker.nextNode(), { type: Element, id: 'D2' });
    assert_node(walker.currentNode, { type: Element, id: 'D2' });
    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
    assert_node(walker.currentNode, { type: Element, id: 'B2' });
    assert_node(walker.previousSibling(), { type: Element, id: 'C2' });
    assert_node(walker.currentNode, { type: Element, id: 'C2' });
}, 'Test that previousSibling properly respects the filter.');
</script>
</body>
</html>
