tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TreeWalker-basic.html (5413B)


      1 <!DOCTYPE html>
      2 <html>
      3 <!--
      4 Test adapted from chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
      5 -->
      6 <head>
      7 <title>TreeWalker: Basic test</title>
      8 <script src="/resources/testharness.js"></script>
      9 <script src="/resources/testharnessreport.js"></script>
     10 <script src="support/assert-node.js"></script>
     11 <div id=log></div>
     12 </head>
     13 <body>
     14 <p>This test checks the basic functionality of TreeWalker.</p>
     15 <script>
     16 function createSampleDOM()
     17 {
     18    // Tree structure:
     19    //             #a
     20    //             |
     21    //        +----+----+
     22    //        |         |
     23    //       "b"        #c
     24    //                  |
     25    //             +----+----+
     26    //             |         |
     27    //            #d      <!--j-->
     28    //             |
     29    //        +----+----+
     30    //        |    |    |
     31    //       "e"  #f   "i"
     32    //             |
     33    //          +--+--+
     34    //          |     |
     35    //         "g" <!--h-->
     36    var div = document.createElement('div');
     37    div.id = 'a';
     38    // div.innerHTML = 'b<div id="c"><div id="d">e<span id="f">g<!--h--></span>i</div><!--j--></div>';
     39 
     40    div.appendChild(document.createTextNode("b"));
     41 
     42    var c = document.createElement("div");
     43    c.id = 'c';
     44    div.appendChild(c);
     45 
     46    var d = document.createElement("div");
     47    d.id = 'd';
     48    c.appendChild(d);
     49 
     50    var e = document.createTextNode("e");
     51    d.appendChild(e);
     52 
     53    var f = document.createElement("span");
     54    f.id = 'f';
     55    d.appendChild(f);
     56 
     57    var g = document.createTextNode("g");
     58    f.appendChild(g);
     59 
     60    var h = document.createComment("h");
     61    f.appendChild(h);
     62 
     63    var i = document.createTextNode("i");
     64    d.appendChild(i);
     65 
     66    var j = document.createComment("j");
     67    c.appendChild(j);
     68 
     69    return div;
     70 }
     71 
     72 function check_walker(walker, root, whatToShowValue)
     73 {
     74    whatToShowValue = whatToShowValue === undefined ? 0xFFFFFFFF : whatToShowValue;
     75 
     76    assert_equals(walker.toString(), '[object TreeWalker]', 'toString');
     77    assert_equals(walker.root, root, 'root');
     78    assert_equals(walker.whatToShow, whatToShowValue, 'whatToShow');
     79    assert_equals(walker.filter, null, 'filter');
     80    assert_equals(walker.currentNode, root, 'currentNode');
     81    assert_readonly(walker, 'root');
     82    assert_readonly(walker, 'whatToShow');
     83    assert_readonly(walker, 'filter');
     84 }
     85 
     86 test(function ()
     87 {
     88    var root = createSampleDOM();
     89    var walker = document.createTreeWalker(root);
     90    check_walker(walker, root);
     91 }, 'Construct a TreeWalker by document.createTreeWalker(root).');
     92 
     93 test(function ()
     94 {
     95    var root = createSampleDOM();
     96    var walker = document.createTreeWalker(root, null, null);
     97    check_walker(walker, root, 0);
     98 }, 'Construct a TreeWalker by document.createTreeWalker(root, null, null).');
     99 
    100 test(function ()
    101 {
    102    var root = createSampleDOM();
    103    var walker = document.createTreeWalker(root, undefined, undefined);
    104    check_walker(walker, root);
    105 }, 'Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined).');
    106 
    107 test(function ()
    108 {
    109    assert_throws_js(TypeError, function () { document.createTreeWalker(); });
    110    assert_throws_js(TypeError, function () { document.createTreeWalker(null); });
    111    assert_throws_js(TypeError, function () { document.createTreeWalker(undefined); });
    112    assert_throws_js(TypeError, function () { document.createTreeWalker(new Object()); });
    113    assert_throws_js(TypeError, function () { document.createTreeWalker(1); });
    114 }, 'Give an invalid root node to document.createTreeWalker().');
    115 
    116 test(function ()
    117 {
    118    var root = createSampleDOM();
    119    var walker = document.createTreeWalker(root);
    120    var f = root.lastChild.firstChild.childNodes[1];  // An element node: div#f.
    121 
    122    assert_node(walker.currentNode, { type: Element, id: 'a' });
    123    assert_equals(walker.parentNode(), null);
    124    assert_node(walker.currentNode, { type: Element, id: 'a' });
    125    assert_node(walker.firstChild(), { type: Text, nodeValue: 'b' });
    126    assert_node(walker.currentNode, { type: Text, nodeValue: 'b' });
    127    assert_node(walker.nextSibling(), { type: Element, id: 'c' });
    128    assert_node(walker.currentNode, { type: Element, id: 'c' });
    129    assert_node(walker.lastChild(), { type: Comment, nodeValue: 'j' });
    130    assert_node(walker.currentNode, { type: Comment, nodeValue: 'j' });
    131    assert_node(walker.previousSibling(), { type: Element, id: 'd' });
    132    assert_node(walker.currentNode, { type: Element, id: 'd' });
    133    assert_node(walker.nextNode(), { type: Text, nodeValue: 'e' });
    134    assert_node(walker.currentNode, { type: Text, nodeValue: 'e' });
    135    assert_node(walker.parentNode(), { type: Element, id: 'd' });
    136    assert_node(walker.currentNode, { type: Element, id: 'd' });
    137    assert_node(walker.previousNode(), { type: Element, id: 'c' });
    138    assert_node(walker.currentNode, { type: Element, id: 'c' });
    139    assert_equals(walker.nextSibling(), null);
    140    assert_node(walker.currentNode, { type: Element, id: 'c' });
    141    walker.currentNode = f;
    142    assert_equals(walker.currentNode, f);
    143 }, 'Walk over nodes.');
    144 
    145 test(function() {
    146    var treeWalker = document.createTreeWalker(document.body, 42, null);
    147    assert_equals(treeWalker.root, document.body);
    148    assert_equals(treeWalker.currentNode, document.body);
    149    assert_equals(treeWalker.whatToShow, 42);
    150    assert_equals(treeWalker.filter, null);
    151 }, "Optional arguments to createTreeWalker should be optional (3 passed, null).");
    152 </script>
    153 </body>
    154 </html>