Bug 1435437 - Expose gNavigatorBundle as a plain JS object with a stringbundle-like API;r=Gijs
This will allow us to not rely on an actual <stringbundle> while still avoiding a mass rewrite
of code that accesses gNavigatorBundle with the more awkward API exposed by gBrowserBundle.
MozReview-Commit-ID: 2B4smbo1xZP
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -138,16 +138,28 @@ if (AppConstants.MOZ_CRASHREPORTER) {
XPCOMUtils.defineLazyServiceGetter(this, "gCrashReporter",
"@mozilla.org/xre/app-info;1",
"nsICrashReporter");
}
XPCOMUtils.defineLazyGetter(this, "gBrowserBundle", function() {
return Services.strings.createBundle("chrome://browser/locale/browser.properties");
});
+XPCOMUtils.defineLazyGetter(this, "gNavigatorBundle", function() {
+ // This is a stringbundle-like interface to gBrowserBundle, formerly a getter for
+ // the "bundle_browser" element.
+ return {
+ getString(key) {
+ return gBrowserBundle.GetStringFromName(key);
+ },
+ getFormattedString(key, array) {
+ return gBrowserBundle.formatStringFromName(key, array, array.length);
+ }
+ };
+});
XPCOMUtils.defineLazyGetter(this, "gTabBrowserBundle", function() {
return Services.strings.createBundle("chrome://browser/locale/tabbrowser.properties");
});
XPCOMUtils.defineLazyGetter(this, "gCustomizeMode", function() {
let scope = {};
ChromeUtils.import("resource:///modules/CustomizeMode.jsm", scope);
return new scope.CustomizeMode(window);
@@ -219,22 +231,21 @@ var gMultiProcessBrowser =
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsILoadContext)
.useRemoteTabs;
if (AppConstants.platform != "macosx") {
var gEditUIVisible = true;
}
-/* globals gBrowser, gNavToolbox, gURLBar:true, gNavigatorBundle*/
+/* globals gBrowser, gNavToolbox, gURLBar:true */
[
["gBrowser", "content"],
["gNavToolbox", "navigator-toolbox"],
["gURLBar", "urlbar"],
- ["gNavigatorBundle", "bundle_browser"]
].forEach(function(elementGlobal) {
var [name, id] = elementGlobal;
Object.defineProperty(window, name, {
configurable: true,
enumerable: true,
get() {
var element = document.getElementById(id);
if (!element)