tor-browser

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

browser_rules_add-rule-button-state.js (2410B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const nodeConstants = require("resource://devtools/shared/dom-node-constants.js");
      7 
      8 // Tests if the `Add rule` button disables itself properly for non-element nodes.
      9 
     10 const TEST_URI = `
     11  <style type="text/css">
     12    #pseudo::before {
     13      content: "before";
     14    }
     15  </style>
     16  <div id="pseudo">${
     17    // put a text node big enough so the text node is not inlined
     18    "pseudo  ".repeat(50)
     19  }
     20  </div>
     21  <-- my comment -->
     22  <div id="testid">Test Node</div>
     23 `;
     24 
     25 add_task(async function () {
     26  await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
     27  const { inspector, view } = await openRuleView();
     28  await testDisabledButton(inspector, view);
     29 });
     30 
     31 async function testDisabledButton(inspector, view) {
     32  const node = "#testid";
     33 
     34  info("Selecting a real element");
     35  await selectNode(node, inspector);
     36  ok(
     37    !view.addRuleButton.disabled,
     38    "Add rule button should be enabled for regular element"
     39  );
     40 
     41  info("Clear selection");
     42  await view.selectElement(null);
     43  ok(
     44    view.addRuleButton.disabled,
     45    "Add rule button should be disabled when no element is selected"
     46  );
     47 
     48  info("Selecting a real element");
     49  await selectNode(node, inspector);
     50  ok(
     51    !view.addRuleButton.disabled,
     52    "Add rule button should be enabled again when selecting regular element"
     53  );
     54 
     55  info("Selecting a pseudo element");
     56  const pseudo = await getNodeFront("#pseudo", inspector);
     57  const children = await inspector.walker.children(pseudo);
     58  const [beforeNodeFront, textNodeFront] = children.nodes;
     59  await selectNode(beforeNodeFront, inspector);
     60  // sanity check
     61  is(
     62    inspector.selection.nodeFront.displayName,
     63    "::before",
     64    "We selected the ::before pseudo element"
     65  );
     66  ok(
     67    !view.addRuleButton.disabled,
     68    "Add rule button should be enabled for pseudo element"
     69  );
     70 
     71  await selectNode(textNodeFront, inspector);
     72  // sanity check
     73  is(
     74    inspector.selection.nodeFront.nodeType,
     75    nodeConstants.TEXT_NODE,
     76    "We selected the text node"
     77  );
     78  ok(
     79    view.addRuleButton.disabled,
     80    "Add rule button should be disabled for text node"
     81  );
     82 
     83  info("Selecting a real element");
     84  await selectNode(node, inspector);
     85  ok(
     86    !view.addRuleButton.disabled,
     87    "Add rule button should be enabled again when selecting regular element"
     88  );
     89 }