tor-browser

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

browser_languages_subdialog.js (6637B)


      1 add_task(async function () {
      2  await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
      3  const contentDocument = gBrowser.contentDocument;
      4  let dialogOverlay = content.gSubDialog._preloadDialog._overlay;
      5 
      6  async function languagesSubdialogOpened() {
      7    const promiseSubDialogLoaded = promiseLoadSubDialog(
      8      "chrome://browser/content/preferences/dialogs/languages.xhtml"
      9    );
     10    contentDocument.getElementById("chooseLanguage").click();
     11    const win = await promiseSubDialogLoaded;
     12    dialogOverlay = content.gSubDialog._topDialog._overlay;
     13    ok(!BrowserTestUtils.isHidden(dialogOverlay), "The dialog is visible.");
     14    return win;
     15  }
     16 
     17  function acceptLanguagesSubdialog(win) {
     18    const button = win.document.querySelector("dialog").getButton("accept");
     19    button.doCommand();
     20  }
     21 
     22  function cancelLanguagesSubdialog(win) {
     23    const button = win.document.querySelector("dialog").getButton("cancel");
     24    button.doCommand();
     25  }
     26 
     27  ok(BrowserTestUtils.isHidden(dialogOverlay), "The dialog is invisible.");
     28  let win = await languagesSubdialogOpened();
     29  ok(
     30    win.document.getElementById("spoofEnglish").hidden,
     31    "The 'Request English' checkbox is hidden."
     32  );
     33  acceptLanguagesSubdialog(win);
     34  ok(BrowserTestUtils.isHidden(dialogOverlay), "The dialog is invisible.");
     35 
     36  await SpecialPowers.pushPrefEnv({
     37    set: [["intl.accept_languages", "en-US,en-XX,foo"]],
     38  });
     39  win = await languagesSubdialogOpened();
     40  let activeLanguages = win.document.getElementById("activeLanguages").children;
     41  Assert.equal(
     42    activeLanguages[0].id,
     43    "en-us",
     44    "The ID for 'en-US' locale code is correctly set."
     45  );
     46  Assert.equal(
     47    activeLanguages[0].firstChild.value,
     48    "English (United States) [en-us]",
     49    "The name for known 'en-US' locale code is correctly resolved."
     50  );
     51  Assert.equal(
     52    activeLanguages[1].id,
     53    "en-xx",
     54    "The ID for 'en-XX' locale code is correctly set."
     55  );
     56  Assert.equal(
     57    activeLanguages[1].firstChild.value,
     58    "English [en-xx]",
     59    "The name for unknown 'en-XX' locale code is resolved using 'en'."
     60  );
     61  Assert.equal(
     62    activeLanguages[2].firstChild.value,
     63    " [foo]",
     64    "The name for unknown 'foo' locale code is empty."
     65  );
     66  acceptLanguagesSubdialog(win);
     67  await SpecialPowers.popPrefEnv();
     68 
     69  await SpecialPowers.pushPrefEnv({
     70    set: [
     71      ["privacy.resistFingerprinting", true],
     72      ["privacy.spoof_english", 0],
     73    ],
     74  });
     75 
     76  win = await languagesSubdialogOpened();
     77  ok(
     78    !win.document.getElementById("spoofEnglish").hidden,
     79    "The 'Request English' checkbox isn't hidden."
     80  );
     81  ok(
     82    !win.document.getElementById("spoofEnglish").checked,
     83    "The 'Request English' checkbox isn't checked."
     84  );
     85  is(
     86    win.Preferences.get("privacy.spoof_english").value,
     87    0,
     88    "The privacy.spoof_english pref is set to 0."
     89  );
     90 
     91  win.document.getElementById("spoofEnglish").checked = true;
     92  win.document.getElementById("spoofEnglish").doCommand();
     93  ok(
     94    win.document.getElementById("spoofEnglish").checked,
     95    "The 'Request English' checkbox is checked."
     96  );
     97  is(
     98    win.Preferences.get("privacy.spoof_english").value,
     99    2,
    100    "The privacy.spoof_english pref is set to 2."
    101  );
    102  acceptLanguagesSubdialog(win);
    103 
    104  win = await languagesSubdialogOpened();
    105  ok(
    106    !win.document.getElementById("spoofEnglish").hidden,
    107    "The 'Request English' checkbox isn't hidden."
    108  );
    109  ok(
    110    win.document.getElementById("spoofEnglish").checked,
    111    "The 'Request English' checkbox is checked."
    112  );
    113  is(
    114    win.Preferences.get("privacy.spoof_english").value,
    115    2,
    116    "The privacy.spoof_english pref is set to 2."
    117  );
    118 
    119  win.document.getElementById("spoofEnglish").checked = false;
    120  win.document.getElementById("spoofEnglish").doCommand();
    121  ok(
    122    !win.document.getElementById("spoofEnglish").checked,
    123    "The 'Request English' checkbox isn't checked."
    124  );
    125  is(
    126    win.Preferences.get("privacy.spoof_english").value,
    127    1,
    128    "The privacy.spoof_english pref is set to 1."
    129  );
    130  acceptLanguagesSubdialog(win);
    131 
    132  win = await languagesSubdialogOpened();
    133  ok(
    134    !win.document.getElementById("spoofEnglish").hidden,
    135    "The 'Request English' checkbox isn't hidden."
    136  );
    137  ok(
    138    !win.document.getElementById("spoofEnglish").checked,
    139    "The 'Request English' checkbox isn't checked."
    140  );
    141  is(
    142    win.Preferences.get("privacy.spoof_english").value,
    143    1,
    144    "The privacy.spoof_english pref is set to 1."
    145  );
    146  acceptLanguagesSubdialog(win);
    147  await SpecialPowers.popPrefEnv();
    148 
    149  await SpecialPowers.pushPrefEnv({
    150    set: [["intl.accept_languages", "en-US"]],
    151  });
    152  win = await languagesSubdialogOpened();
    153  is(
    154    win.document.getElementById("remove").disabled,
    155    false,
    156    "The Remove button is enabled when any language is selected on the list"
    157  );
    158 
    159  win.document.getElementById("remove").doCommand();
    160  is(
    161    win.Preferences.get("intl.accept_languages").value,
    162    "",
    163    "Accepted language has been removed from the preference"
    164  );
    165  is(
    166    win.document.getElementById("activeLanguages").itemCount,
    167    0,
    168    "Accepted languages list is empty"
    169  );
    170  ok(
    171    win.document.getElementById("remove").disabled,
    172    "The Remove button is disabled when there is no language on the list"
    173  );
    174  acceptLanguagesSubdialog(win);
    175 
    176  // Testing adding from the available languages list
    177  win = await languagesSubdialogOpened();
    178  ok(
    179    win.document.getElementById("addButton").disabled,
    180    "The Add button is disabled after opening the Languages dialog"
    181  );
    182 
    183  win.document.getElementById("availableLanguages").click();
    184  ok(
    185    win.document.getElementById("addButton").disabled,
    186    "The Add button is disabled after clicking on the available languages list"
    187  );
    188 
    189  let availableLanguages =
    190    win.document.getElementById("availableLanguages").menupopup;
    191  let target = availableLanguages.querySelector("#he");
    192  target.click();
    193  is(
    194    win.document.getElementById("addButton").disabled,
    195    false,
    196    "The Add button is enabled after selecting a language from the available languages list"
    197  );
    198  win.document.getElementById("addButton").click();
    199  activeLanguages = win.document.getElementById("activeLanguages").children;
    200  Assert.equal(
    201    activeLanguages[0].id,
    202    "he",
    203    "Hebrew language added as topmost item."
    204  );
    205 
    206  ok(
    207    win.document.getElementById("addButton").disabled,
    208    "The Add button is disabled after the selected language has been added"
    209  );
    210  is(
    211    win.document.getElementById("activeLanguages").children[0].id,
    212    "he",
    213    "Hebrew language added as topmost item."
    214  );
    215 
    216  cancelLanguagesSubdialog(win);
    217 
    218  gBrowser.removeCurrentTab();
    219 });