1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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();
});
|