tor-browser

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

test_inspector-mutations-value.html (5392B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug </title>
      9 
     10  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
     11  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
     12  <script type="application/javascript" src="inspector-helpers.js"></script>
     13  <script type="application/javascript">
     14 "use strict";
     15 
     16 const WalkerActor = require("devtools/server/actors/inspector/walker");
     17 
     18 window.onload = function() {
     19  SimpleTest.waitForExplicitFinish();
     20  runNextTest();
     21 };
     22 
     23 const testSummaryLength = 10;
     24 WalkerActor.setValueSummaryLength(testSummaryLength);
     25 SimpleTest.registerCleanupFunction(function() {
     26  WalkerActor.setValueSummaryLength(WalkerActor.DEFAULT_VALUE_SUMMARY_LENGTH);
     27 });
     28 
     29 let gInspectee = null;
     30 let gWalker = null;
     31 let valueNode;
     32 var valueFront;
     33 var longStringFront;
     34 var longString = "stringstringstringstringstringstringstringstringstringstringstring";
     35 var shortString = "str";
     36 var shortString2 = "str2";
     37 
     38 addTest(async function setup() {
     39  const url = document.getElementById("inspectorContent").href;
     40  const { target, doc } = await attachURL(url);
     41  const inspector = await target.getFront("inspector");
     42  gInspectee = doc;
     43  gWalker = inspector.walker;
     44  runNextTest();
     45 });
     46 
     47 addTest(setupValueTest);
     48 addTest(testKeepLongValue);
     49 addTest(testSetShortValue);
     50 addTest(testKeepShortValue);
     51 addTest(testSetLongValue);
     52 addTest(setupFrameValueTest);
     53 addTest(testKeepLongValue);
     54 addTest(testSetShortValue);
     55 addTest(testKeepShortValue);
     56 addTest(testSetLongValue);
     57 
     58 function setupValueTest() {
     59  valueNode = gInspectee.querySelector("#longstring").firstChild;
     60  promiseDone(gWalker.querySelector(gWalker.rootNode, "#longstring").then(node => {
     61    longStringFront = node;
     62    return gWalker.children(node);
     63  }).then(children => {
     64    valueFront = children.nodes[0];
     65  }).then(runNextTest));
     66 }
     67 
     68 function setupFrameValueTest() {
     69  const frame = gInspectee.querySelector("#childFrame");
     70  valueNode = frame.contentDocument.querySelector("#longstring").firstChild;
     71 
     72  promiseDone(gWalker.querySelector(gWalker.rootNode, "#childFrame").then(childFrame => {
     73    return gWalker.children(childFrame);
     74  }).then(children => {
     75    const nodes = children.nodes;
     76    is(nodes.length, 1, "There should be only one child of the iframe");
     77    const [node] =nodes;
     78    is(node.nodeType, Node.DOCUMENT_NODE, "iframe child should be a document node");
     79    return node.walkerFront.querySelector(node, "#longstring");
     80  }).then(node => {
     81    longStringFront = node;
     82    return longStringFront.walkerFront.children(node);
     83  }).then(children => {
     84    valueFront = children.nodes[0];
     85  }).then(runNextTest));
     86 }
     87 
     88 function checkNodeFrontValue(front, expectedValue) {
     89  return front.getNodeValue().then(longstring => {
     90    return longstring.string();
     91  }).then(str => {
     92    is(str, expectedValue, "Node value is as expected");
     93  });
     94 }
     95 
     96 function testKeepLongValue() {
     97  // After first setup we should have a long string in the node
     98  ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
     99 
    100  valueNode.nodeValue = longString;
    101  valueFront.walkerFront.once("mutations", (changes) => {
    102    ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
    103    ok(!changes.some(change => change.type === "inlineTextChild"),
    104      "No inline text child mutation was fired.");
    105    checkNodeFrontValue(valueFront, longString).then(runNextTest);
    106  });
    107 }
    108 
    109 function testSetShortValue() {
    110  ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
    111 
    112  valueNode.nodeValue = shortString;
    113  valueFront.walkerFront.once("mutations", (changes) => {
    114    ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
    115    ok(changes.some(change => change.type === "inlineTextChild"),
    116      "An inlineTextChild mutation was fired.");
    117    checkNodeFrontValue(valueFront, shortString).then(runNextTest);
    118  });
    119 }
    120 
    121 function testKeepShortValue() {
    122  ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
    123 
    124  valueNode.nodeValue = shortString2;
    125  valueFront.walkerFront.once("mutations", (changes) => {
    126    ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
    127    ok(!changes.some(change => change.type === "inlineTextChild"),
    128      "No inline text child mutation was fired.");
    129    checkNodeFrontValue(valueFront, shortString2).then(runNextTest);
    130  });
    131 }
    132 
    133 function testSetLongValue() {
    134  ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
    135 
    136  valueNode.nodeValue = longString;
    137  valueFront.walkerFront.once("mutations", (changes) => {
    138    ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
    139    ok(changes.some(change => change.type === "inlineTextChild"),
    140      "An inlineTextChild mutation was fired.");
    141    checkNodeFrontValue(valueFront, longString).then(runNextTest);
    142  });
    143 }
    144 
    145 addTest(function cleanup() {
    146  gInspectee = null;
    147  gWalker = null;
    148  runNextTest();
    149 });
    150 
    151  </script>
    152 </head>
    153 <body>
    154 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
    155 <a id="inspectorContent" target="_blank" href="inspector-traversal-data.html">Test Document</a>
    156 <p id="display"></p>
    157 <div id="content" style="display: none">
    158 
    159 </div>
    160 <pre id="test">
    161 </pre>
    162 </body>
    163 </html>