tor-browser

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

commit b86d2953fa5f57676f6115f4b9acfc80e3dbade0
parent 8c2dca895b8a9eea73856fd1ba251ff19ff7beb1
Author: Eemeli Aro <eemeli@mozilla.com>
Date:   Thu, 30 Oct 2025 10:57:47 +0000

Bug 1760013 - Use Services.locale.fontLanguageGroup. r=glandium,mstriemer

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

Diffstat:
Mbrowser/components/preferences/dialogs/fonts.js | 13+++++++++----
Mbrowser/components/preferences/main.js | 9++++-----
Mbrowser/components/preferences/tests/browser_basic_rebuild_fonts_test.js | 16++++++----------
Mmodules/libpref/init/all.js | 2+-
Mtoolkit/components/aboutconfig/test/browser/browser_basic.js | 5-----
Mtoolkit/components/resistfingerprinting/nsUserCharacteristics.cpp | 7++++---
Mtoolkit/components/urlformatter/URLFormatter.sys.mjs | 3++-
7 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/browser/components/preferences/dialogs/fonts.js b/browser/components/preferences/dialogs/fonts.js @@ -22,7 +22,7 @@ const kFontMinSizeFmt = "font.minimum-size.%LANG%"; window.addEventListener("load", () => gFontsDialog.onLoad()); Preferences.addAll([ - { id: "font.language.group", type: "wstring" }, + { id: "font.language.group", type: "string" }, { id: "browser.display.use_document_fonts", type: "int" }, ]); @@ -157,9 +157,14 @@ var gFontsDialog = { }, readFontLanguageGroup() { - var languagePref = Preferences.get("font.language.group"); - this._selectLanguageGroup(languagePref.value); - return undefined; + let languageGroup = Preferences.get("font.language.group").value; + let rv = undefined; + if (!languageGroup) { + languageGroup = Services.locale.fontLanguageGroup; + rv = languageGroup; + } + this._selectLanguageGroup(languageGroup); + return rv; }, readUseDocumentFonts() { diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js @@ -123,7 +123,7 @@ Preferences.addAll([ { id: "browser.display.document_color_use", type: "int" }, // Fonts - { id: "font.language.group", type: "wstring" }, + { id: "font.language.group", type: "string" }, // Languages { id: "intl.regional_prefs.use_os_locales", type: "bool" }, @@ -3357,10 +3357,9 @@ var gMainPane = { * Populates the default font list in UI. */ _rebuildFonts() { - var langGroupPref = Preferences.get("font.language.group"); - var isSerif = - this._readDefaultFontTypeForLanguage(langGroupPref.value) == "serif"; - this._selectDefaultLanguageGroup(langGroupPref.value, isSerif); + var langGroup = Services.locale.fontLanguageGroup; + var isSerif = this._readDefaultFontTypeForLanguage(langGroup) == "serif"; + this._selectDefaultLanguageGroup(langGroup, isSerif); }, /** diff --git a/browser/components/preferences/tests/browser_basic_rebuild_fonts_test.js b/browser/components/preferences/tests/browser_basic_rebuild_fonts_test.js @@ -7,21 +7,17 @@ add_task(async function () { let doc = gBrowser.contentDocument; let contentWindow = gBrowser.contentWindow; - var langGroup = Services.prefs.getComplexValue( - "font.language.group", - Ci.nsIPrefLocalizedString - ).data; - is( - contentWindow.Preferences.get("font.language.group").value, - langGroup, - "Language group should be set correctly." - ); - + let langGroup = Services.locale.fontLanguageGroup; let defaultFontType = Services.prefs.getCharPref("font.default." + langGroup); let fontFamilyPref = "font.name." + defaultFontType + "." + langGroup; let fontFamily = Services.prefs.getCharPref(fontFamilyPref); let fontFamilyField = doc.getElementById("defaultFont"); is(fontFamilyField.value, fontFamily, "Font family should be set correctly."); + is( + fontFamilyField.getAttribute("preference"), + fontFamilyPref, + "langGroup is used in defaultFont preference" + ); function dispatchMenuItemCommand(menuItem) { const cmdEvent = doc.createEvent("xulcommandevent"); diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js @@ -1490,7 +1490,7 @@ pref("intl.accept_languages", "chrome://global/locale/intl.propert // like date/time formatting, unit formatting, calendars etc. should use // OS locale set instead of the app locale set. pref("intl.regional_prefs.use_os_locales", false); -pref("font.language.group", "chrome://global/locale/intl.properties"); + pref("font.cjk_pref_fallback_order", "zh-cn,zh-hk,zh-tw,ja,ko"); // This pref controls pseudolocales for testing localization. diff --git a/toolkit/components/aboutconfig/test/browser/browser_basic.js b/toolkit/components/aboutconfig/test/browser/browser_basic.js @@ -32,11 +32,6 @@ add_task(async function test_load_settings() { this.getRow(PREF_BOOLEAN_USERVALUE_TRUE).hasClass("has-user-value") ); - // Test to see if values are localized, sampling from different files. If - // any of these are removed or their value changes, just update the value - // here or point to a different preference in the same file. - Assert.equal(this.getRow("font.language.group").value, "x-western"); - // Test to see if user created value is not empty string when it matches // /^chrome:\/\/.+\/locale\/.+\.properties/. Assert.equal( diff --git a/toolkit/components/resistfingerprinting/nsUserCharacteristics.cpp b/toolkit/components/resistfingerprinting/nsUserCharacteristics.cpp @@ -35,6 +35,7 @@ #include "mozilla/RelativeLuminanceUtils.h" #include "mozilla/ServoStyleConsts.h" #include "mozilla/dom/ScreenBinding.h" +#include "mozilla/intl/LocaleService.h" #include "mozilla/intl/OSPreferences.h" #include "mozilla/intl/TimeZone.h" #include "mozilla/widget/ScreenManager.h" @@ -490,11 +491,11 @@ void PopulateFontPrefs() { return; } - nsCString defaultLanguageGroup; - Preferences::GetLocalizedCString("font.language.group", defaultLanguageGroup); + nsCString fontLanguageGroup; + intl::LocaleService::GetInstance()->GetFontLanguageGroup(fontLanguageGroup); #define FONT_PREF(PREF_NAME, METRIC_NAME) \ - CollectFontPrefValue(prefRootBranch, defaultLanguageGroup, PREF_NAME, \ + CollectFontPrefValue(prefRootBranch, fontLanguageGroup, PREF_NAME, \ glean::characteristics::METRIC_NAME##_western, \ glean::characteristics::METRIC_NAME##_default_group, \ glean::characteristics::METRIC_NAME##_modified) diff --git a/toolkit/components/urlformatter/URLFormatter.sys.mjs b/toolkit/components/urlformatter/URLFormatter.sys.mjs @@ -164,7 +164,8 @@ nsURLFormatterService.prototype = { format ) ) { - // This looks as if it might be a localised preference + // This looks as if it might be a localised preference, + // which could theoretically happen with browser.startup.homepage. try { format = Services.prefs.getComplexValue( aPref,