tor-browser

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

browser_markup_html_edit_02.js (5051B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 /* import-globals-from helper_outerhtml_test_runner.js */
      4 "use strict";
      5 
      6 // Test outerHTML edition via the markup-view
      7 
      8 loadHelperScript("helper_outerhtml_test_runner.js");
      9 requestLongerTimeout(2);
     10 
     11 const TEST_DATA = [
     12  {
     13    selector: "#badMarkup1",
     14    oldHTML: '<div id="badMarkup1">badMarkup1</div>',
     15    newHTML: '<div id="badMarkup1">badMarkup1</div> hanging</div>',
     16    async validate({ pageNodeFront, selectedNodeFront }) {
     17      is(pageNodeFront, selectedNodeFront, "Original element is selected");
     18 
     19      const [textNodeName, textNodeData] = await SpecialPowers.spawn(
     20        gBrowser.selectedBrowser,
     21        [],
     22        () => {
     23          const node =
     24            content.document.querySelector("#badMarkup1").nextSibling;
     25          return [node.nodeName, node.data];
     26        }
     27      );
     28      is(textNodeName, "#text", "Sibling is a text element");
     29      is(textNodeData, " hanging", "New text node has expected text content");
     30    },
     31  },
     32  {
     33    selector: "#badMarkup2",
     34    oldHTML: '<div id="badMarkup2">badMarkup2</div>',
     35    newHTML:
     36      '<div id="badMarkup2">badMarkup2</div> hanging<div></div>' +
     37      "</div></div></body>",
     38    async validate({ pageNodeFront, selectedNodeFront }) {
     39      is(pageNodeFront, selectedNodeFront, "Original element is selected");
     40 
     41      const [textNodeName, textNodeData] = await SpecialPowers.spawn(
     42        gBrowser.selectedBrowser,
     43        [],
     44        () => {
     45          const node =
     46            content.document.querySelector("#badMarkup2").nextSibling;
     47          return [node.nodeName, node.data];
     48        }
     49      );
     50      is(textNodeName, "#text", "Sibling is a text element");
     51      is(textNodeData, " hanging", "New text node has expected text content");
     52    },
     53  },
     54  {
     55    selector: "#badMarkup3",
     56    oldHTML: '<div id="badMarkup3">badMarkup3</div>',
     57    newHTML:
     58      '<div id="badMarkup3">badMarkup3 <em>Emphasized <strong> ' +
     59      "and strong</div>",
     60    async validate({ pageNodeFront, selectedNodeFront }) {
     61      is(pageNodeFront, selectedNodeFront, "Original element is selected");
     62 
     63      const emText = await getContentPageElementProperty(
     64        "#badMarkup3 em",
     65        "textContent"
     66      );
     67      const strongText = await getContentPageElementProperty(
     68        "#badMarkup3 strong",
     69        "textContent"
     70      );
     71      is(emText, "Emphasized  and strong", "<em> was auto created");
     72      is(strongText, " and strong", "<strong> was auto created");
     73    },
     74  },
     75  {
     76    selector: "#badMarkup4",
     77    oldHTML: '<div id="badMarkup4">badMarkup4</div>',
     78    newHTML: '<div id="badMarkup4">badMarkup4</p>',
     79    async validate({ pageNodeFront, selectedNodeFront }) {
     80      is(pageNodeFront, selectedNodeFront, "Original element is selected");
     81 
     82      const divText = await getContentPageElementProperty(
     83        "#badMarkup4",
     84        "textContent"
     85      );
     86      const divTag = await getContentPageElementProperty(
     87        "#badMarkup4",
     88        "tagName"
     89      );
     90 
     91      const pText = await getContentPageElementProperty(
     92        "#badMarkup4 p",
     93        "textContent"
     94      );
     95      const pTag = await getContentPageElementProperty(
     96        "#badMarkup4 p",
     97        "tagName"
     98      );
     99 
    100      is(divText, "badMarkup4", "textContent is correct");
    101      is(divTag, "DIV", "did not change to <p> tag");
    102      is(pText, "", "The <p> tag has no children");
    103      is(pTag, "P", "Created an empty <p> tag");
    104    },
    105  },
    106  {
    107    selector: "#badMarkup5",
    108    oldHTML: '<p id="badMarkup5">badMarkup5</p>',
    109    newHTML: '<p id="badMarkup5">badMarkup5 <div>with a nested div</div></p>',
    110    async validate({ pageNodeFront, selectedNodeFront }) {
    111      is(pageNodeFront, selectedNodeFront, "Original element is selected");
    112 
    113      const num =
    114        await getNumberOfMatchingElementsInContentPage("#badMarkup5 div");
    115 
    116      const pText = await getContentPageElementProperty(
    117        "#badMarkup5",
    118        "textContent"
    119      );
    120      const pTag = await getContentPageElementProperty(
    121        "#badMarkup5",
    122        "tagName"
    123      );
    124 
    125      const divText = await getContentPageElementProperty(
    126        "#badMarkup5 ~ div",
    127        "textContent"
    128      );
    129      const divTag = await getContentPageElementProperty(
    130        "#badMarkup5 ~ div",
    131        "tagName"
    132      );
    133 
    134      is(num, 0, "The invalid markup got created as a sibling");
    135      is(pText, "badMarkup5 ", "The p tag does not take in the div content");
    136      is(pTag, "P", "Did not change to a <div> tag");
    137      is(divText, "with a nested div", "textContent is correct");
    138      is(divTag, "DIV", "Did not change to <p> tag");
    139    },
    140  },
    141 ];
    142 
    143 const TEST_URL =
    144  "data:text/html," +
    145  "<!DOCTYPE html>" +
    146  "<head><meta charset='utf-8' /></head>" +
    147  "<body>" +
    148  TEST_DATA.map(outer => outer.oldHTML).join("\n") +
    149  "</body>" +
    150  "</html>";
    151 
    152 add_task(async function () {
    153  const { inspector } = await openInspectorForURL(TEST_URL);
    154  inspector.markup._frame.focus();
    155  await runEditOuterHTMLTests(TEST_DATA, inspector);
    156 });