Bug 1362225 - Speed up i18n.getMessage. r=aswan

MozReview-Commit-ID: EcadiurI7tu

--HG--
extra : rebase_source : 746051a46e2824f662e25d4ed1b3e3fa05f226ff
This commit is contained in:
Kris Maglione 2017-05-04 16:38:18 -07:00
parent 9f6940d77e
commit 8a35020652

View File

@ -37,6 +37,7 @@ var {
EventEmitter,
ExtensionError,
SpreadArgs,
defineLazyGetter,
getConsole,
getInnerWindowID,
getUniqueId,
@ -1160,15 +1161,17 @@ LocaleData.prototype = {
// https://developer.chrome.com/extensions/i18n
localizeMessage(message, substitutions = [], options = {}) {
let defaultOptions = {
locale: this.selectedLocale,
defaultValue: "",
cloneScope: null,
};
options = Object.assign(defaultOptions, options);
let locales = this.availableLocales;
if (options.locale) {
locales = new Set([this.BUILTIN, options.locale, this.defaultLocale]
.filter(locale => this.messages.has(locale)));
}
let locales = new Set([this.BUILTIN, options.locale, this.defaultLocale]
.filter(locale => this.messages.has(locale)));
options = Object.assign(defaultOptions, options);
// Message names are case-insensitive, so normalize them to lower-case.
message = message.toLowerCase();
@ -1177,6 +1180,10 @@ LocaleData.prototype = {
if (messages.has(message)) {
let str = messages.get(message);
if (!str.includes("$")) {
return str;
}
if (!Array.isArray(substitutions)) {
substitutions = [substitutions];
}
@ -1311,6 +1318,11 @@ LocaleData.prototype = {
},
};
defineLazyGetter(LocaleData.prototype, "availableLocales", function() {
return new Set([this.BUILTIN, this.selectedLocale, this.defaultLocale]
.filter(locale => this.messages.has(locale)));
});
// This is a generic class for managing event listeners. Example usage:
//
// new SingletonEventManager(context, "api.subAPI", fire => {