forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			139 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
add_task(async function () {
 | 
						|
  await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
 | 
						|
  const contentDocument = gBrowser.contentDocument;
 | 
						|
  let dialogOverlay = content.gSubDialog._preloadDialog._overlay;
 | 
						|
 | 
						|
  async function languagesSubdialogOpened() {
 | 
						|
    const promiseSubDialogLoaded = promiseLoadSubDialog(
 | 
						|
      "chrome://browser/content/preferences/dialogs/languages.xhtml"
 | 
						|
    );
 | 
						|
    contentDocument.getElementById("chooseLanguage").click();
 | 
						|
    const win = await promiseSubDialogLoaded;
 | 
						|
    dialogOverlay = content.gSubDialog._topDialog._overlay;
 | 
						|
    ok(!BrowserTestUtils.is_hidden(dialogOverlay), "The dialog is visible.");
 | 
						|
    return win;
 | 
						|
  }
 | 
						|
 | 
						|
  function acceptLanguagesSubdialog(win) {
 | 
						|
    const button = win.document.querySelector("dialog").getButton("accept");
 | 
						|
    button.doCommand();
 | 
						|
  }
 | 
						|
 | 
						|
  ok(BrowserTestUtils.is_hidden(dialogOverlay), "The dialog is invisible.");
 | 
						|
  let win = await languagesSubdialogOpened();
 | 
						|
  ok(
 | 
						|
    win.document.getElementById("spoofEnglish").hidden,
 | 
						|
    "The 'Request English' checkbox is hidden."
 | 
						|
  );
 | 
						|
  acceptLanguagesSubdialog(win);
 | 
						|
  ok(BrowserTestUtils.is_hidden(dialogOverlay), "The dialog is invisible.");
 | 
						|
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [["intl.accept_languages", "en-US,en-XX,foo"]],
 | 
						|
  });
 | 
						|
  win = await languagesSubdialogOpened();
 | 
						|
  let activeLanguages = win.document.getElementById("activeLanguages").children;
 | 
						|
  ok(
 | 
						|
    activeLanguages[0].id == "en-us",
 | 
						|
    "The ID for 'en-US' locale code is correctly set."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    activeLanguages[0].firstChild.value == "English (United States) [en-us]",
 | 
						|
    "The name for known 'en-US' locale code is correctly resolved."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    activeLanguages[1].id == "en-xx",
 | 
						|
    "The ID for 'en-XX' locale code is correctly set."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    activeLanguages[1].firstChild.value == "English [en-xx]",
 | 
						|
    "The name for unknown 'en-XX' locale code is resolved using 'en'."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    activeLanguages[2].firstChild.value == " [foo]",
 | 
						|
    "The name for unknown 'foo' locale code is empty."
 | 
						|
  );
 | 
						|
  acceptLanguagesSubdialog(win);
 | 
						|
  await SpecialPowers.popPrefEnv();
 | 
						|
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [
 | 
						|
      ["privacy.resistFingerprinting", true],
 | 
						|
      ["privacy.spoof_english", 0],
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  win = await languagesSubdialogOpened();
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").hidden,
 | 
						|
    "The 'Request English' checkbox isn't hidden."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").checked,
 | 
						|
    "The 'Request English' checkbox isn't checked."
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.Preferences.get("privacy.spoof_english").value,
 | 
						|
    0,
 | 
						|
    "The privacy.spoof_english pref is set to 0."
 | 
						|
  );
 | 
						|
 | 
						|
  win.document.getElementById("spoofEnglish").checked = true;
 | 
						|
  win.document.getElementById("spoofEnglish").doCommand();
 | 
						|
  ok(
 | 
						|
    win.document.getElementById("spoofEnglish").checked,
 | 
						|
    "The 'Request English' checkbox is checked."
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.Preferences.get("privacy.spoof_english").value,
 | 
						|
    2,
 | 
						|
    "The privacy.spoof_english pref is set to 2."
 | 
						|
  );
 | 
						|
  acceptLanguagesSubdialog(win);
 | 
						|
 | 
						|
  win = await languagesSubdialogOpened();
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").hidden,
 | 
						|
    "The 'Request English' checkbox isn't hidden."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    win.document.getElementById("spoofEnglish").checked,
 | 
						|
    "The 'Request English' checkbox is checked."
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.Preferences.get("privacy.spoof_english").value,
 | 
						|
    2,
 | 
						|
    "The privacy.spoof_english pref is set to 2."
 | 
						|
  );
 | 
						|
 | 
						|
  win.document.getElementById("spoofEnglish").checked = false;
 | 
						|
  win.document.getElementById("spoofEnglish").doCommand();
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").checked,
 | 
						|
    "The 'Request English' checkbox isn't checked."
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.Preferences.get("privacy.spoof_english").value,
 | 
						|
    1,
 | 
						|
    "The privacy.spoof_english pref is set to 1."
 | 
						|
  );
 | 
						|
  acceptLanguagesSubdialog(win);
 | 
						|
 | 
						|
  win = await languagesSubdialogOpened();
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").hidden,
 | 
						|
    "The 'Request English' checkbox isn't hidden."
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    !win.document.getElementById("spoofEnglish").checked,
 | 
						|
    "The 'Request English' checkbox isn't checked."
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.Preferences.get("privacy.spoof_english").value,
 | 
						|
    1,
 | 
						|
    "The privacy.spoof_english pref is set to 1."
 | 
						|
  );
 | 
						|
  acceptLanguagesSubdialog(win);
 | 
						|
 | 
						|
  gBrowser.removeCurrentTab();
 | 
						|
});
 |