tor-browser

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

browser_rules_keyframes-rule_01.js (3180B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Test that keyframe rules and gutters are displayed correctly in the
      7 // rule view.
      8 
      9 const TEST_URI = URL_ROOT + "doc_keyframeanimation.html";
     10 
     11 add_task(async function () {
     12  await addTab(TEST_URI);
     13  const { inspector, view } = await openRuleView();
     14  await testPacman(inspector, view);
     15  await testBoxy(inspector, view);
     16  await testMoxy(inspector, view);
     17 });
     18 
     19 async function testPacman(inspector, view) {
     20  info("Test content and gutter in the keyframes rule of #pacman");
     21 
     22  await assertKeyframeRules("#pacman", inspector, view, {
     23    elementRulesNb: 2,
     24    keyframeRulesNb: 2,
     25    keyframesRules: ["pacman", "pacman"],
     26    keyframeRules: ["100%", "100%"],
     27  });
     28 
     29  assertGutters(view, {
     30    guttersNbs: 2,
     31    gutterHeading: ["Keyframes pacman", "Keyframes pacman"],
     32  });
     33 }
     34 
     35 async function testBoxy(inspector, view) {
     36  info("Test content and gutter in the keyframes rule of #boxy");
     37 
     38  await assertKeyframeRules("#boxy", inspector, view, {
     39    elementRulesNb: 3,
     40    keyframeRulesNb: 3,
     41    keyframesRules: ["boxy", "boxy", "boxy"],
     42    keyframeRules: ["10%", "20%", "100%"],
     43  });
     44 
     45  assertGutters(view, {
     46    guttersNbs: 1,
     47    gutterHeading: ["Keyframes boxy"],
     48  });
     49 }
     50 
     51 async function testMoxy(inspector, view) {
     52  info("Test content and gutter in the keyframes rule of #moxy");
     53 
     54  await assertKeyframeRules("#moxy", inspector, view, {
     55    elementRulesNb: 3,
     56    keyframeRulesNb: 4,
     57    keyframesRules: ["boxy", "boxy", "boxy", "moxy"],
     58    keyframeRules: ["10%", "20%", "100%", "100%"],
     59  });
     60 
     61  assertGutters(view, {
     62    guttersNbs: 2,
     63    gutterHeading: ["Keyframes boxy", "Keyframes moxy"],
     64  });
     65 }
     66 
     67 async function assertKeyframeRules(selector, inspector, view, expected) {
     68  await selectNode(selector, inspector);
     69  const elementStyle = view._elementStyle;
     70 
     71  const rules = {
     72    elementRules: elementStyle.rules.filter(rule => !rule.keyframes),
     73    keyframeRules: elementStyle.rules.filter(rule => rule.keyframes),
     74  };
     75 
     76  is(
     77    rules.elementRules.length,
     78    expected.elementRulesNb,
     79    selector + " has the correct number of non keyframe element rules"
     80  );
     81  is(
     82    rules.keyframeRules.length,
     83    expected.keyframeRulesNb,
     84    selector + " has the correct number of keyframe rules"
     85  );
     86 
     87  let i = 0;
     88  for (const keyframeRule of rules.keyframeRules) {
     89    Assert.equal(
     90      keyframeRule.keyframes.name,
     91      expected.keyframesRules[i],
     92      keyframeRule.keyframes.name + " has the correct keyframes name"
     93    );
     94    Assert.equal(
     95      keyframeRule.domRule.keyText,
     96      expected.keyframeRules[i],
     97      keyframeRule.domRule.keyText + " selector heading is correct"
     98    );
     99    i++;
    100  }
    101 }
    102 
    103 function assertGutters(view, expected) {
    104  const gutters = view.element.querySelectorAll(".ruleview-header");
    105 
    106  is(
    107    gutters.length,
    108    expected.guttersNbs,
    109    "There are " + gutters.length + " gutter headings"
    110  );
    111 
    112  let i = 0;
    113  for (const gutter of gutters) {
    114    is(
    115      gutter.textContent,
    116      expected.gutterHeading[i],
    117      "Correct " + gutter.textContent + " gutter headings"
    118    );
    119    i++;
    120  }
    121 
    122  return gutters;
    123 }