[tor-commits] [Git][tpo/applications/mullvad-browser][mullvad-browser-115.11.0esr-13.5-1] 4 commits: fixup! Bug 42397: Change RFP-spoofed TZ to Atlantic/Reykjavik.

Pier Angelo Vendrame (@pierov) git at gitlab.torproject.org
Mon Jun 3 08:28:21 UTC 2024



Pier Angelo Vendrame pushed to branch mullvad-browser-115.11.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser


Commits:
e84b8691 by Pier Angelo Vendrame at 2024-06-03T10:28:01+02:00
fixup! Bug 42397: Change RFP-spoofed TZ to Atlantic/Reykjavik.

Revert "Bug 42397: Change RFP-spoofed TZ to Atlantic/Reykjavik."

This reverts commit 6d9095b1fcfd0a89f9871301e1d9f0f561ff50be.

- - - - -
abe44d42 by hackademix at 2024-06-03T10:28:03+02:00
Bug 1835987 - Change RFP-spoofed TZ to Atlantic/Reykjavik. r=tjr

Atlantic/Reykjavik stays on UTC during all the year, but it is less
likely to be blocked than plan UTC.

Differential Revision: https://phabricator.services.mozilla.com/D212131

- - - - -
48691732 by Pier Angelo Vendrame at 2024-06-03T10:28:03+02:00
fixup! Bug 41966: Allow removing locales from the locale alternatives list.

Revert "Bug 41966: Allow removing locales from the locale alternatives list."

This reverts commit bba294a4b4a78c8b2fa2cb31e4cb4aa0c86d058e.

- - - - -
dbf278c5 by Henry Wilkes at 2024-06-03T10:28:04+02:00
Bug 1851618 - Allow removing packaged locales from requestedLocales. r=settings-reviewers,eemeli,Gijs

We open up the UI to allow the user to remove locales from their
requestedLocales list, except for the default locale.

Differential Revision: https://phabricator.services.mozilla.com/D209930
- - - - -


4 changed files:

- browser/components/preferences/dialogs/browserLanguages.js
- browser/components/preferences/tests/browser_browser_languages_subdialog.js
- browser/components/resistfingerprinting/test/browser/browser_timezone.js
- js/src/vm/DateTime.cpp


Changes:

=====================================
browser/components/preferences/dialogs/browserLanguages.js
=====================================
@@ -327,8 +327,7 @@ class SortedItemSelectList {
  * @prop {string} id - A unique ID.
  * @prop {string} label - The localized display name.
  * @prop {string} value - The BCP 47 locale identifier or the word "search".
- * @prop {boolean} canRemove - Locales that are part of the packaged locales cannot be
- *                             removed.
+ * @prop {boolean} canRemove - The default locale cannot be removed.
  * @prop {boolean} installed - Whether or not the locale is installed.
  */
 
@@ -338,7 +337,6 @@ class SortedItemSelectList {
  */
 async function getLocaleDisplayInfo(localeCodes) {
   let availableLocales = new Set(await LangPackMatcher.getAvailableLocales());
-  let packagedLocales = new Set(Services.locale.packagedLocales);
   let localeNames = Services.intl.getLocaleDisplayNames(
     undefined,
     localeCodes,
@@ -349,7 +347,7 @@ async function getLocaleDisplayInfo(localeCodes) {
       id: "locale-" + code,
       label: localeNames[i],
       value: code,
-      canRemove: code !== Services.locale.defaultLocale,
+      canRemove: code != Services.locale.defaultLocale,
       installed: availableLocales.has(code),
     };
   });


=====================================
browser/components/preferences/tests/browser_browser_languages_subdialog.js
=====================================
@@ -142,18 +142,23 @@ async function createDictionaryBrowseResults() {
   return dir;
 }
 
-function assertLocaleOrder(list, locales) {
+function assertLocaleOrder(list, locales, selectedLocale) {
   is(
     list.itemCount,
     locales.split(",").length,
-    "The right number of locales are selected"
+    "The right number of locales are in the list"
   );
   is(
     Array.from(list.children)
       .map(child => child.value)
       .join(","),
     locales,
-    "The selected locales are in order"
+    "The listed locales are in order"
+  );
+  is(
+    list.selectedItem.value,
+    selectedLocale,
+    "The selected item locale matches"
   );
 }
 
@@ -219,6 +224,11 @@ async function selectLocale(localeCode, available, selected, dialogDoc) {
   await added;
 }
 
+// Select a locale from the list of already added locales.
+function selectAddedLocale(localeCode, selected) {
+  selected.selectedItem = selected.querySelector(`[value="${localeCode}"]`);
+}
+
 async function openDialog(doc, search = false) {
   let dialogLoaded = promiseLoadSubDialog(BROWSER_LANGUAGES_URL);
   if (search) {
@@ -283,7 +293,7 @@ add_task(async function testDisabledBrowserLanguages() {
   // pl is not selected since it's disabled.
   is(pl.userDisabled, true, "pl is disabled");
   is(pl.version, "1.0", "pl is the old 1.0 version");
-  assertLocaleOrder(selected, "en-US,he");
+  assertLocaleOrder(selected, "en-US,he", "en-US");
 
   // Wait for the children menu to be populated.
   await BrowserTestUtils.waitForCondition(
@@ -313,7 +323,7 @@ add_task(async function testDisabledBrowserLanguages() {
 
   // Add pl.
   await selectLocale("pl", available, selected, dialogDoc);
-  assertLocaleOrder(selected, "pl,en-US,he");
+  assertLocaleOrder(selected, "pl,en-US,he", "pl");
 
   // Find pl again since it's been upgraded.
   pl = await AddonManager.getAddonByID(langpackId("pl"));
@@ -371,12 +381,12 @@ add_task(async function testReorderingBrowserLanguages() {
   let firstDialogId = getDialogId(dialogDoc);
 
   // The initial order is set by the pref, filtered by available.
-  assertLocaleOrder(selected, "en-US,pl,he");
+  assertLocaleOrder(selected, "en-US,pl,he", "en-US");
 
   // Moving pl down changes the order.
-  selected.selectedItem = selected.querySelector("[value='pl']");
+  selectAddedLocale("pl", selected);
   dialogDoc.getElementById("down").doCommand();
-  assertLocaleOrder(selected, "en-US,he,pl");
+  assertLocaleOrder(selected, "en-US,he,pl", "pl");
 
   // Accepting the change shows the confirm message bar.
   let dialogClosed = BrowserTestUtils.waitForEvent(dialog, "dialogclosing");
@@ -404,13 +414,13 @@ add_task(async function testReorderingBrowserLanguages() {
   selected = newDialog.selected;
 
   // The initial order comes from the previous settings.
-  assertLocaleOrder(selected, "en-US,he,pl");
+  assertLocaleOrder(selected, "en-US,he,pl", "en-US");
 
   // Select pl in the list.
-  selected.selectedItem = selected.querySelector("[value='pl']");
+  selectAddedLocale("pl", selected);
   // Move pl back up.
   dialogDoc.getElementById("up").doCommand();
-  assertLocaleOrder(selected, "en-US,pl,he");
+  assertLocaleOrder(selected, "en-US,pl,he", "pl");
 
   // Accepting the change hides the confirm message bar.
   dialogClosed = BrowserTestUtils.waitForEvent(dialog, "dialogclosing");
@@ -485,25 +495,42 @@ add_task(async function testAddAndRemoveSelectedLanguages() {
     }
   );
   // The initial order is set by the pref.
-  assertLocaleOrder(selected, "en-US");
+  assertLocaleOrder(selected, "en-US", "en-US");
   assertAvailableLocales(available, ["fr", "pl", "he"]);
 
+  let removeButton = dialogDoc.getElementById("remove");
+  // Cannot remove the default locale.
+  is(removeButton.disabled, true, "Remove en-US should be disabled");
+
   // Add pl and fr to selected.
   await selectLocale("pl", available, selected, dialogDoc);
   await selectLocale("fr", available, selected, dialogDoc);
 
-  assertLocaleOrder(selected, "fr,pl,en-US");
+  assertLocaleOrder(selected, "fr,pl,en-US", "fr");
   assertAvailableLocales(available, ["he"]);
 
+  // Can remove the added locale again.
+  is(removeButton.disabled, false, "Remove fr should be not be disabled");
+
+  selectAddedLocale("en-US", selected);
+  // Cannot remove the default locale, even after adding more.
+  is(removeButton.disabled, true, "Remove en-us should still be disabled");
+
   // Remove pl and fr from selected.
-  dialogDoc.getElementById("remove").doCommand();
-  dialogDoc.getElementById("remove").doCommand();
-  assertLocaleOrder(selected, "en-US");
+  selectAddedLocale("fr", selected);
+  is(removeButton.disabled, false, "Remove fr should be not be disabled");
+  removeButton.doCommand();
+  // Selection moves to pl.
+  assertLocaleOrder(selected, "pl,en-US", "pl");
+  is(removeButton.disabled, false, "Remove pl should be not be disabled");
+  removeButton.doCommand();
+  assertLocaleOrder(selected, "en-US", "en-US");
   assertAvailableLocales(available, ["fr", "pl", "he"]);
+  is(removeButton.disabled, true, "Remove en-us should be disabled at end");
 
   // Add he to selected.
   await selectLocale("he", available, selected, dialogDoc);
-  assertLocaleOrder(selected, "he,en-US");
+  assertLocaleOrder(selected, "he,en-US", "he");
   assertAvailableLocales(available, ["pl", "fr"]);
 
   // Accepting the change shows the confirm message bar.
@@ -603,7 +630,7 @@ add_task(async function testInstallFromAMO() {
   }
 
   // The initial order is set by the pref.
-  assertLocaleOrder(selected, "en-US");
+  assertLocaleOrder(selected, "en-US", "en-US");
   assertAvailableLocales(available, ["fr", "he", "pl"]);
   is(
     Services.locale.availableLocales.join(","),
@@ -633,7 +660,7 @@ add_task(async function testInstallFromAMO() {
   );
 
   // Verify the list is correct.
-  assertLocaleOrder(selected, "pl,en-US");
+  assertLocaleOrder(selected, "pl,en-US", "pl");
   assertAvailableLocales(available, ["fr", "he"]);
   is(
     Services.locale.availableLocales.sort().join(","),
@@ -658,7 +685,7 @@ add_task(async function testInstallFromAMO() {
 
   // Move pl down the list, which prevents an error since it isn't valid.
   dialogDoc.getElementById("down").doCommand();
-  assertLocaleOrder(selected, "en-US,pl");
+  assertLocaleOrder(selected, "en-US,pl", "pl");
 
   // Test that disabling the langpack removes it from the list.
   let dialogClosed = BrowserTestUtils.waitForEvent(dialog, "dialogclosing");
@@ -683,7 +710,7 @@ add_task(async function testInstallFromAMO() {
       target => available.itemCount > 1
     );
   }
-  assertLocaleOrder(selected, "en-US");
+  assertLocaleOrder(selected, "en-US", "en-US");
   assertAvailableLocales(available, ["fr", "he", "pl"]);
 
   // Uninstall the langpack and dictionary.


=====================================
browser/components/resistfingerprinting/test/browser/browser_timezone.js
=====================================
@@ -18,13 +18,13 @@ async function verifySpoofed() {
   function test() {
     let date = new Date();
     const TZ_NAME = "Atlantic/Reykjavik";
-    const TZ_SUFFIX = "(Greenwich Mean Time)";
+    const TZ_SUFFIX = "Greenwich Mean Time";
     ok(
-      date.toString().endsWith(TZ_SUFFIX),
+      date.toString().endsWith(`(${TZ_SUFFIX})`),
       `The date toString() is in ${TZ_NAME} timezone.`
     );
     ok(
-      date.toTimeString().endsWith(TZ_SUFFIX),
+      date.toTimeString().endsWith(`(${TZ_SUFFIX})`),
       `The date toTimeString() is in ${TZ_NAME} timezone.`
     );
     let dateTimeFormat = Intl.DateTimeFormat("en-US", {


=====================================
js/src/vm/DateTime.cpp
=====================================
@@ -484,11 +484,12 @@ bool js::DateTimeInfo::internalTimeZoneDisplayName(char16_t* buf, size_t buflen,
 
 mozilla::intl::TimeZone* js::DateTimeInfo::timeZone() {
   if (!timeZone_) {
-    // For resist finger printing mode we always use the Atlantic/Reykjavik time zone
-    // as a "real world" UTC equivalent.
+    // For resist finger printing mode we always use the Atlantic/Reykjavik time
+    // zone as a "real world" UTC equivalent.
     mozilla::Maybe<mozilla::Span<const char16_t>> timeZoneOverride;
     if (shouldResistFingerprinting_) {
-      timeZoneOverride = mozilla::Some(mozilla::MakeStringSpan(u"Atlantic/Reykjavik"));
+      timeZoneOverride =
+          mozilla::Some(mozilla::MakeStringSpan(u"Atlantic/Reykjavik"));
     }
 
     auto timeZone = mozilla::intl::TimeZone::TryCreate(timeZoneOverride);



View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/1b8016ae3a8b3b168fb7696cbc1dfdfd029b0928...dbf278c5339a48ff3096b98eec2c0f9b7e3d76fb

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/1b8016ae3a8b3b168fb7696cbc1dfdfd029b0928...dbf278c5339a48ff3096b98eec2c0f9b7e3d76fb
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-commits/attachments/20240603/649c2faa/attachment-0001.htm>


More information about the tor-commits mailing list