Bug 1249742 - If a localized pref is overridden, don't set it; r?mixedpuppy
MozReview-Commit-ID: 2WGc5GOhbDf
--- a/browser/components/distribution.js
+++ b/browser/components/distribution.js
@@ -367,44 +367,60 @@ DistributionCustomizer.prototype = {
// We eval() the localizable prefs as well (even though they'll
// always get set as a string) to keep the INI format consistent:
// string prefs always need to be in quotes
let localizedStr = Cc["@mozilla.org/pref-localizedstring;1"].
createInstance(Ci.nsIPrefLocalizedString);
- if (sections["LocalizablePreferences"]) {
- for (let key of enumerate(this._ini.getKeys("LocalizablePreferences"))) {
+ var usedLocalizablePreferences = [];
+
+ if (sections["LocalizablePreferences-" + this._locale]) {
+ for (let key of enumerate(this._ini.getKeys("LocalizablePreferences-" + this._locale))) {
try {
- let value = eval(this._ini.getString("LocalizablePreferences", key));
- value = value.replace(/%LOCALE%/g, this._locale);
- value = value.replace(/%LANGUAGE%/g, this._language);
- localizedStr.data = "data:text/plain," + key + "=" + value;
- defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ let value = eval(this._ini.getString("LocalizablePreferences-" + this._locale, key));
+ if (value !== undefined) {
+ localizedStr.data = "data:text/plain," + key + "=" + value;
+ defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ }
+ usedLocalizablePreferences.push(key);
} catch (e) { /* ignore bad prefs and move on */ }
}
}
if (sections["LocalizablePreferences-" + this._language]) {
for (let key of enumerate(this._ini.getKeys("LocalizablePreferences-" + this._language))) {
+ if (usedLocalizablePreferences.indexOf(key) > -1) {
+ continue;
+ }
try {
let value = eval(this._ini.getString("LocalizablePreferences-" + this._language, key));
- localizedStr.data = "data:text/plain," + key + "=" + value;
- defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ if (value !== undefined) {
+ localizedStr.data = "data:text/plain," + key + "=" + value;
+ defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ }
+ usedLocalizablePreferences.push(key);
} catch (e) { /* ignore bad prefs and move on */ }
}
}
- if (sections["LocalizablePreferences-" + this._locale]) {
- for (let key of enumerate(this._ini.getKeys("LocalizablePreferences-" + this._locale))) {
+ if (sections["LocalizablePreferences"]) {
+ for (let key of enumerate(this._ini.getKeys("LocalizablePreferences"))) {
+ if (usedLocalizablePreferences.indexOf(key) > -1) {
+ continue;
+ }
try {
- let value = eval(this._ini.getString("LocalizablePreferences-" + this._locale, key));
- localizedStr.data = "data:text/plain," + key + "=" + value;
- defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ let value = eval(this._ini.getString("LocalizablePreferences", key));
+ if (value !== undefined) {
+ value = value.replace(/%LOCALE%/g, this._locale);
+ value = value.replace(/%LANGUAGE%/g, this._language);
+ localizedStr.data = "data:text/plain," + key + "=" + value;
+ defaults.setComplexValue(key, Ci.nsIPrefLocalizedString, localizedStr);
+ }
} catch (e) { /* ignore bad prefs and move on */ }
}
}
return this._checkCustomizationComplete();
},
_checkCustomizationComplete: function DIST__checkCustomizationComplete() {
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -47,16 +47,20 @@ EXTRA_COMPONENTS += [
EXTRA_JS_MODULES += [
'distribution.js',
]
BROWSER_CHROME_MANIFESTS += [
'test/browser.ini'
]
+XPCSHELL_TESTS_MANIFESTS += [
+ 'test/xpcshell.ini'
+]
+
if CONFIG['MOZ_SAFE_BROWSING']:
BROWSER_CHROME_MANIFESTS += ['safebrowsing/content/test/browser.ini']
with Files('safebrowsing/*'):
BUG_COMPONENT = ('Toolkit', 'Phishing Protection')
with Files('controlcenter/**'):
BUG_COMPONENT = ('Firefox', 'General')