content/base/test/test_NodeIterator_mutations_3.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 <head>
     4  <title>DOM Traversal: NodeIterator: Mutations (3/x)</title>
     5   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     6   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
     7 </head>
     8 <p id="display"></p>
     9 <div id="content" style="display: none">
    10   <span id=root><span id=B></span><span id=C></span><span id=D></span><span id=E><span id=E1><span id=E11></span></span></span></span>
    11 </div>
    12 <pre id="test">
    13 <script class="testbody" type="text/javascript">
    14   function removeNode(n) {
    15     n.parentNode.removeChild(n);
    16   }
    17   var initInner = $('content').innerHTML;
    18   var content = $('content');
    21   function resetContent() {
    22     content.innerHTML = initInner;
    23     var checkIt = document.createNodeIterator(content, NodeFilter.SHOW_ELEMENT,
    24 					      testNodeFilter);
    25     var node;
    26     while ((node = checkIt.nextNode()) != null) {
    27       if (node.id) {
    28         window[node.id] = node;
    29       }
    30     }
    31   }
    33   function makeSpan(id) {
    34     var e = document.createElement('span');
    35     e.id = id;
    36     return e;
    37   }
    39   function testNodeFilter(n) {
    40     if (n.tagName == 'SPAN')
    41       return NodeFilter.FILTER_ACCEPT;
    42     return NodeFilter.FILTER_SKIP;
    43   }
    45   function checkseq(it, root, expect) {
    46     var checkIt = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
    47 					      testNodeFilter);
    48     var printedPointer = (it.referenceNode == undefined);
    49     var string = '';
    50     var node;
    51     while ((node = checkIt.nextNode()) != null) {
    52       if (!printedPointer && it.referenceNode == node) {
    53         printedPointer = true;
    54 	var s = '[' + node.id + '] ';
    55           if (it.pointerBeforeReferenceNode)
    56             string += "* " + s;
    57           else
    58             string += s + "* ";
    59       } else {
    60         string += node.id + " ";
    61       }
    62     }
    63     is(string.slice(0, -1), expect, "sequence check");
    64   }
    66   resetContent();
    67   var it = document.createNodeIterator(E, NodeFilter.SHOW_ELEMENT,
    68                                        testNodeFilter);
    69   checkseq(it, root, "root B C D * [E] E1 E11");
    71   removeNode(C);
    72   checkseq(it, root, "root B D * [E] E1 E11");
    74   it.nextNode();
    75   removeNode(D);
    76   checkseq(it, root, "root B [E] * E1 E11");
    78   it.nextNode();
    79   removeNode(B);
    80   checkseq(it, root, "root E [E1] * E11");
    82   it.nextNode();
    83   checkseq(it, root, "root E E1 [E11] *");
    85   it.nextNode();
    86   checkseq(it, root, "root E E1 [E11] *");
    88   it.previousNode();
    89   it.previousNode();
    90   it.previousNode();
    91   it.previousNode();
    92   it.previousNode();
    93   checkseq(it, root, "root * [E] E1 E11");
    95   resetContent();
    96   it = document.createNodeIterator(E, NodeFilter.SHOW_ELEMENT,
    97                                    testNodeFilter);
    98   checkseq(it, root, "root B C D * [E] E1 E11");
   100   it.nextNode();
   101   it.nextNode();
   102   checkseq(it, root, "root B C D E [E1] * E11");
   104   it.previousNode();
   105   it.previousNode();
   106   checkseq(it, root, "root B C D * [E] E1 E11");
   108   removeNode(D);
   109   removeNode(B);
   110   checkseq(it, root, "root C * [E] E1 E11");
   112   n = makeSpan('n');
   113   root.insertBefore(n, E);
   114   checkseq(it, root, "root C n * [E] E1 E11");
   116   n2 = makeSpan('n2');
   117   root.insertBefore(n2, C);
   118   checkseq(it, root, "root n2 C n * [E] E1 E11");
   120   resetContent();
   121   it = document.createNodeIterator(E, NodeFilter.SHOW_ELEMENT,
   122                                    testNodeFilter);
   123   checkseq(it, root, "root B C D * [E] E1 E11");
   125   removeNode(root);
   126   checkseq(it, root, "root B C D * [E] E1 E11");
   128   removeNode(B);
   129   checkseq(it, root, "root C D * [E] E1 E11");
   131   removeNode(D);
   132   checkseq(it, root, "root C * [E] E1 E11");
   134   it.nextNode();
   135   it.nextNode();
   136   it.nextNode();
   137   checkseq(it, root, "root C E E1 [E11] *");
   139   removeNode(E1);
   140   checkseq(it, root, "root C [E] *");
   142   n = makeSpan('n');
   143   root.insertBefore(n, E);
   144   checkseq(it, root, "root C n [E] *");
   146   n2 = makeSpan('n2');
   147   E.appendChild(n2);
   148   checkseq(it, root, "root C n [E] * n2");
   150   it.nextNode();
   151   checkseq(it, root, "root C n E [n2] *");
   153   removeNode(E);
   154   checkseq(it, root, "root C n");
   157 </script>
   158 </pre>
   159 </body>
   160 </html>

mercurial