tor-browser

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

test_frecency_alternative_nimbus.js (3011B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 add_task(async function () {
      5  const tests = [
      6    {
      7      enableVariable: "originsAlternativeEnable",
      8      enablePref: "places.frecency.origins.alternative.featureGate",
      9      variables: {
     10        originsDaysCutOff: "places.frecency.origins.alternative.daysCutOff",
     11      },
     12    },
     13    {
     14      enableVariable: "pagesAlternativeEnable",
     15      enablePref: "places.frecency.pages.alternative.featureGate",
     16      variables: {
     17        pagesNumSampledVisits:
     18          "places.frecency.pages.alternative.numSampledVisits",
     19        pagesMaxVisitGap:
     20          "places.frecency.pages.alternative.interactions.maxVisitGapSeconds",
     21        pagesViewTimeSeconds:
     22          "places.frecency.pages.alternative.interactions.viewTimeSeconds",
     23        pageViewTimeIfManyKeypressesSeconds:
     24          "places.frecency.pages.alternative.interactions.viewTimeIfManyKeypressesSeconds",
     25        manyKeypresses:
     26          "places.frecency.pages.alternative.interactions.manyKeypresses",
     27        pagesHalfLifeDays: "places.frecency.pages.alternative.halfLifeDays",
     28        pagesVeryHighWeight: "places.frecency.pages.alternative.veryHighWeight",
     29        pagesHighWeight: "places.frecency.pages.alternative.highWeight",
     30        pagesMediumWeight: "places.frecency.pages.alternative.mediumWeight",
     31        pagesLowWeight: "places.frecency.pages.alternative.lowWeight",
     32      },
     33    },
     34  ];
     35  for (let test of tests) {
     36    await doTest(test.enableVariable, test.enablePref, test.variables);
     37  }
     38 });
     39 
     40 async function doTest(enableVariable, enablePref, otherVariables) {
     41  info(`Testing ${enableVariable}`);
     42  let reset = await UrlbarTestUtils.initNimbusFeature(
     43    {
     44      // Empty for sanity check.
     45    },
     46    "urlbar",
     47    "config"
     48  );
     49  Assert.ok(!Services.prefs.prefHasUserValue(enablePref));
     50  Assert.ok(!Services.prefs.getBoolPref(enablePref, false));
     51  for (let pref of Object.values(otherVariables)) {
     52    Assert.ok(!Services.prefs.prefHasUserValue(pref));
     53  }
     54  await reset();
     55 
     56  reset = await UrlbarTestUtils.initNimbusFeature(
     57    {
     58      [enableVariable]: true,
     59    },
     60    "urlbar",
     61    "config"
     62  );
     63  Assert.ok(Services.prefs.prefHasUserValue(enablePref));
     64  Assert.equal(Services.prefs.getBoolPref(enablePref), true);
     65  for (let pref of Object.values(otherVariables)) {
     66    Assert.ok(!Services.prefs.prefHasUserValue(pref));
     67  }
     68  await reset();
     69 
     70  const FAKE_VALUE = 777;
     71  let config = {
     72    [enableVariable]: true,
     73  };
     74  for (let variable of Object.keys(otherVariables)) {
     75    config[variable] = FAKE_VALUE;
     76  }
     77  reset = await UrlbarTestUtils.initNimbusFeature(config, "urlbar", "config");
     78  Assert.ok(Services.prefs.prefHasUserValue(enablePref));
     79  Assert.equal(Services.prefs.getBoolPref(enablePref), true);
     80  for (let pref of Object.values(otherVariables)) {
     81    Assert.ok(Services.prefs.prefHasUserValue(pref));
     82    Assert.equal(Services.prefs.getIntPref(pref, 90), FAKE_VALUE);
     83  }
     84 
     85  await reset();
     86 }