tor-browser

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

browser_setting_group_in_progress.js (4005B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   https://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 async function openPrefsWithSettings({ allEnabled, sectionEnabled }) {
      7  await SpecialPowers.pushPrefEnv({
      8    set: [
      9      ["browser.settings-redesign.enabled", allEnabled],
     10      ["browser.settings-redesign.mysection.enabled", sectionEnabled],
     11    ],
     12  });
     13  await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
     14  let doc = gBrowser.selectedBrowser.contentDocument;
     15  let win = doc.ownerGlobal;
     16  win.Preferences.addSetting({
     17    id: "testSetting",
     18    get: () => true,
     19  });
     20  win.SettingGroupManager.registerGroup("mysection", {
     21    inProgress: true,
     22    l10nId: "downloads-header-2",
     23    headingLevel: 2,
     24    items: [
     25      {
     26        id: "testSetting",
     27        controlAttrs: {
     28          label: "Test setting",
     29        },
     30      },
     31    ],
     32  });
     33  let zoomGroup = doc.getElementById("zoomGroup");
     34  let legacyGroup = doc.createXULElement("groupbox");
     35  legacyGroup.id = "mysectionGroup";
     36  legacyGroup.setAttribute("data-srd-groupid", "mysection");
     37  legacyGroup.setAttribute("data-category", "paneGeneral");
     38  legacyGroup.hidden = true;
     39  let mysectionGroup = doc.createElement("setting-group");
     40  mysectionGroup.setAttribute("groupid", "mysection");
     41  mysectionGroup.setAttribute("data-category", "paneGeneral");
     42  mysectionGroup.hidden = true;
     43  zoomGroup.parentElement.insertBefore(mysectionGroup, zoomGroup);
     44  zoomGroup.parentElement.insertBefore(legacyGroup, zoomGroup);
     45  win.initSettingGroup("mysection");
     46  let paneLoaded = waitForPaneChange("general");
     47  EventUtils.synthesizeMouseAtCenter(
     48    doc.getElementById("category-general"),
     49    {},
     50    win
     51  );
     52  await paneLoaded;
     53  return doc;
     54 }
     55 
     56 add_task(async function test_section_disabled() {
     57  try {
     58    let doc = await openPrefsWithSettings({
     59      allEnabled: false,
     60      sectionEnabled: false,
     61    });
     62    let legacyGroup = doc.getElementById("mysectionGroup");
     63    let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
     64    ok(legacyGroup.checkVisibility(), "The legacy group is visible");
     65    is(
     66      legacyGroup.dataset.category,
     67      "paneGeneral",
     68      "The legacy group has a category"
     69    );
     70    ok(
     71      !legacyGroup.hasAttribute("data-hidden-from-search"),
     72      "The legacy group is visible to search"
     73    );
     74    ok(!redesignGroup, "The redesign group was removed");
     75  } finally {
     76    gBrowser.removeCurrentTab();
     77  }
     78 });
     79 
     80 add_task(async function test_section_enabled() {
     81  let doc = await openPrefsWithSettings({
     82    allEnabled: false,
     83    sectionEnabled: true,
     84  });
     85  let legacyGroup = doc.getElementById("mysectionGroup");
     86  let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
     87  ok(!legacyGroup.checkVisibility(), "The legacy group is hidden");
     88  ok(!legacyGroup.dataset.category, "The legacy group category is removed");
     89  is(
     90    legacyGroup.getAttribute("data-hidden-from-search"),
     91    "true",
     92    "The legacy group is hidden from search"
     93  );
     94  ok(redesignGroup.checkVisibility(), "The redesign group is visible");
     95  is(
     96    redesignGroup.dataset.category,
     97    "paneGeneral",
     98    "The redesign group has a category"
     99  );
    100  gBrowser.removeCurrentTab();
    101 });
    102 
    103 add_task(async function test_all_enabled() {
    104  let doc = await openPrefsWithSettings({
    105    allEnabled: true,
    106    sectionEnabled: false,
    107  });
    108  let legacyGroup = doc.getElementById("mysectionGroup");
    109  let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]');
    110  ok(!legacyGroup.checkVisibility(), "The legacy group is hidden");
    111  ok(!legacyGroup.dataset.category, "The legacy group category is removed");
    112  is(
    113    legacyGroup.getAttribute("data-hidden-from-search"),
    114    "true",
    115    "The legacy group is hidden from search"
    116  );
    117  ok(redesignGroup.checkVisibility(), "The redesign group is visible");
    118  is(
    119    redesignGroup.dataset.category,
    120    "paneGeneral",
    121    "The redesign group has a category"
    122  );
    123  gBrowser.removeCurrentTab();
    124 });