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:
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,