summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js')
-rw-r--r--browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js b/browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js
new file mode 100644
index 000000000..32c1bd726
--- /dev/null
+++ b/browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js
@@ -0,0 +1,76 @@
+Services.prefs.setBoolPref("browser.preferences.instantApply", true);
+
+registerCleanupFunction(function() {
+ Services.prefs.clearUserPref("browser.preferences.instantApply");
+});
+
+add_task(function*() {
+ yield openPreferencesViaOpenPreferencesAPI("paneContent", null, {leaveOpen: true});
+ let doc = gBrowser.contentDocument;
+ var langGroup = Services.prefs.getComplexValue("font.language.group", Ci.nsIPrefLocalizedString).data
+ is(doc.getElementById("font.language.group").value, langGroup,
+ "Language group should be set correctly.");
+
+ let defaultFontType = Services.prefs.getCharPref("font.default." + langGroup);
+ let fontFamily = Services.prefs.getCharPref("font.name." + defaultFontType + "." + langGroup);
+ let fontFamilyField = doc.getElementById("defaultFont");
+ is(fontFamilyField.value, fontFamily, "Font family should be set correctly.");
+
+ let defaultFontSize = Services.prefs.getIntPref("font.size.variable." + langGroup);
+ let fontSizeField = doc.getElementById("defaultFontSize");
+ is(fontSizeField.value, defaultFontSize, "Font size should be set correctly.");
+
+ doc.getElementById("advancedFonts").click();
+ let win = yield promiseLoadSubDialog("chrome://browser/content/preferences/fonts.xul");
+ doc = win.document;
+
+ // Simulate a dumb font backend.
+ win.FontBuilder._enumerator = {
+ _list: ["MockedFont1", "MockedFont2", "MockedFont3"],
+ EnumerateFonts: function(lang, type, list) {
+ return this._list;
+ },
+ EnumerateAllFonts: function() {
+ return this._list;
+ },
+ getDefaultFont: function() { return null; },
+ getStandardFamilyName: function(name) { return name; },
+ };
+ win.FontBuilder._allFonts = null;
+ win.FontBuilder._langGroupSupported = false;
+
+ let langGroupElement = doc.getElementById("font.language.group");
+ let selectLangsField = doc.getElementById("selectLangs");
+ let serifField = doc.getElementById("serif");
+ let armenian = "x-armn";
+ let western = "x-western";
+
+ langGroupElement.value = armenian;
+ selectLangsField.value = armenian;
+ is(serifField.value, "", "Font family should not be set.");
+
+ langGroupElement.value = western;
+ selectLangsField.value = western;
+
+ // Simulate a font backend supporting language-specific enumeration.
+ // NB: FontBuilder has cached the return value from EnumerateAllFonts(),
+ // so _allFonts will always have 3 elements regardless of subsequent
+ // _list changes.
+ win.FontBuilder._enumerator._list = ["MockedFont2"];
+
+ langGroupElement.value = armenian;
+ selectLangsField.value = armenian;
+ is(serifField.value, "MockedFont2", "Font family should be set.");
+
+ langGroupElement.value = western;
+ selectLangsField.value = western;
+
+ // Simulate a system that has no fonts for the specified language.
+ win.FontBuilder._enumerator._list = [];
+
+ langGroupElement.value = armenian;
+ selectLangsField.value = armenian;
+ is(serifField.value, "", "Font family should not be set.");
+
+ gBrowser.removeCurrentTab();
+});