tor-browser

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

browser_rules_mark_overridden_07.js (2423B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Tests that the rule view marks overridden rules correctly based on the
      7 // specificity of the rule.
      8 
      9 const TEST_URI = `
     10  <style type='text/css'>
     11    #testid {
     12      margin-left: 23px;
     13    }
     14 
     15    div {
     16      margin-right: 23px;
     17      margin-left: 1px !important;
     18    }
     19 
     20    body {
     21      color: blue;
     22    }
     23 
     24    body {
     25      margin-right: 1px !important;
     26      font-size: 79px;
     27      line-height: 100px !important;
     28      color: green !important;
     29    }
     30 
     31    body {
     32      color: red;
     33    }
     34 
     35    span {
     36      font-size: 12px;
     37      line-height: 10px;
     38    }
     39  </style>
     40  <body>
     41    <span>
     42      <div id='testid' class='testclass'>Styled Node</div>
     43    </span>
     44  </body>
     45 `;
     46 
     47 add_task(async function () {
     48  await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
     49  const { inspector, view } = await openRuleView();
     50  await selectNode("#testid", inspector);
     51  testMarkOverridden(inspector, view);
     52 });
     53 
     54 function testMarkOverridden(inspector, view) {
     55  const elementStyle = view._elementStyle;
     56 
     57  const RESULTS = [
     58    // We skip the first element
     59    [],
     60    [{ name: "margin-left", value: "23px", overridden: true }],
     61    [
     62      { name: "margin-right", value: "23px", overridden: false },
     63      { name: "margin-left", value: "1px", overridden: false },
     64    ],
     65    [
     66      { name: "font-size", value: "12px", overridden: false },
     67      { name: "line-height", value: "10px", overridden: false },
     68    ],
     69    [{ name: "color", value: "red", overridden: true }],
     70    [
     71      { name: "margin-right", value: "1px", overridden: true },
     72      { name: "font-size", value: "79px", overridden: true },
     73      { name: "line-height", value: "100px", overridden: true },
     74      { name: "color", value: "green", overridden: false },
     75    ],
     76    [{ name: "color", value: "blue", overridden: true }],
     77  ];
     78 
     79  for (let i = 1; i < RESULTS.length; ++i) {
     80    const idRule = elementStyle.rules[i];
     81 
     82    for (const propIndex in RESULTS[i]) {
     83      const expected = RESULTS[i][propIndex];
     84      const prop = idRule.textProps[propIndex];
     85 
     86      info("Checking rule " + i + ", property " + propIndex);
     87 
     88      is(prop.name, expected.name, "check property name");
     89      is(prop.value, expected.value, "check property value");
     90      is(prop.overridden, expected.overridden, "check property overridden");
     91    }
     92  }
     93 }