content/base/test/test_NodeIterator_mutations_2.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <!-- NodeIterator mutation tests, 2.
     4      Originally part of WebKit, Mochi-ified by Zack Weinberg.
     5      This file based on node-iterator-00[...].html from
     6        http://svn.webkit.org/repository/webkit/trunk/LayoutTests/traversal/
     7   -->
     8 <head>
     9  <title>DOM Traversal: NodeIterator: Mutations (2/x)</title>
    10   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    11   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
    12 </head>
    13 <p id="display"></p>
    14 <div id="content" style="display: none">
    15 </div>
    16 <pre id="test">
    17 <script class="testbody" type="text/javascript">
    18   function resetContent() {
    19     var content = $('content');
    20     content.innerHTML = ('<span id="A"><\/span><span id="B"><\/span>'
    21 			 + '<span id="C"><\/span><span id="D"><\/span>'
    22 			 + '<span id="E"><\/span><span id="F"><\/span>'
    23 			 + '<span id="G"><\/span><span id="H"><\/span>'
    24 			 + '<span id="I"><\/span>');
    25     return content;
    26   }
    28   function makeSpan(id) {
    29     var e = document.createElement('span');
    30     e.id = id;
    31     return e;
    32   }
    34   function testNodeFilter(n) {
    35     if (n.tagName == 'SPAN')
    36       return NodeFilter.FILTER_ACCEPT;
    37     return NodeFilter.FILTER_SKIP;
    38   }
    40   function checkseq(it, root, expect) {
    41     var checkIt = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    42 					      testNodeFilter);
    43     var printedPointer = (it.referenceNode == undefined);
    44     var string = '';
    45     var node;
    46     while ((node = checkIt.nextNode()) != null) {
    47       if (!printedPointer && it.referenceNode == node) {
    48         printedPointer = true;
    49 	var s = '[' + node.id + '] ';
    50           if (it.pointerBeforeReferenceNode)
    51             string += "* " + s;
    52           else
    53             string += s + "* ";
    54       } else {
    55         string += node.id + " ";
    56       }
    57     }
    58     is(string.slice(0, -1), expect, "sequence check");
    59   }
    61   // first a basic sanity check [node-iterator-001]
    62   (function(){
    63      var root = resetContent();
    64      var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    65 					  testNodeFilter);
    67      checkseq(it, root, 'A B C D E F G H I');
    68      it.nextNode();
    69      checkseq(it, root, '[A] * B C D E F G H I');
    70      it.previousNode();
    71      checkseq(it, root, '* [A] B C D E F G H I');
    72      it.previousNode();
    73      checkseq(it, root, '* [A] B C D E F G H I');
    74   })();
    76   // Mutations that should not move the iterator [node-iterator-002]
    77   (function(){
    78      var root = resetContent();
    79      var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    80 					  testNodeFilter);
    82      for (var i = 0; i < 4; i++)
    83        it.nextNode();
    84      checkseq(it, root, 'A B C [D] * E F G H I');
    86      root.removeChild($('E'));
    87      checkseq(it, root, 'A B C [D] * F G H I');
    89      var X = makeSpan('X');
    90      root.insertBefore(X, $('F'));
    91      checkseq(it, root, 'A B C [D] * X F G H I');
    93      var I = $('I');
    94      root.removeChild(I);
    95      root.insertBefore(I, X);
    96      checkseq(it, root, 'A B C [D] * I X F G H');
    97   })();
    99   // 002 complete
   101   /* Template
   102   (function(){
   103      var root = resetContent();
   104      var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
   105 					  testNodeFilter);
   107   })();
   108   */
   109 </script>
   110 </pre>
   111 </body>
   112 </html>

mercurial