michael@0: // -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*- michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: Cu.import("resource://gre/modules/XPCOMUtils.jsm"); michael@0: Cu.import("resource://gre/modules/Services.jsm"); michael@0: michael@0: /* michael@0: * JS modules michael@0: */ michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "Downloads", michael@0: "resource://gre/modules/Downloads.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "FormHistory", michael@0: "resource://gre/modules/FormHistory.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "FileUtils", michael@0: "resource://gre/modules/FileUtils.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "PageThumbs", michael@0: "resource://gre/modules/PageThumbs.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "PluralForm", michael@0: "resource://gre/modules/PluralForm.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", michael@0: "resource://gre/modules/PlacesUtils.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", michael@0: "resource://gre/modules/NetUtil.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "DownloadUtils", michael@0: "resource://gre/modules/DownloadUtils.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "NewTabUtils", michael@0: "resource://gre/modules/NewTabUtils.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "Promise", michael@0: "resource://gre/modules/Promise.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "ColorUtils", michael@0: "resource:///modules/colorUtils.jsm"); michael@0: michael@0: #ifdef NIGHTLY_BUILD michael@0: XPCOMUtils.defineLazyModuleGetter(this, "ShumwayUtils", michael@0: "resource://shumway/ShumwayUtils.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "PdfJs", michael@0: "resource://pdf.js/PdfJs.jsm"); michael@0: #endif michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "Task", michael@0: "resource://gre/modules/Task.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "OS", michael@0: "resource://gre/modules/osfile.jsm"); michael@0: michael@0: XPCOMUtils.defineLazyModuleGetter(this, "UITelemetry", michael@0: "resource://gre/modules/UITelemetry.jsm"); michael@0: michael@0: #ifdef MOZ_UPDATER michael@0: XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", michael@0: "resource://gre/modules/AddonManager.jsm"); michael@0: #endif michael@0: michael@0: /* michael@0: * Services michael@0: */ michael@0: michael@0: XPCOMUtils.defineLazyServiceGetter(this, "StyleSheetSvc", michael@0: "@mozilla.org/content/style-sheet-service;1", michael@0: "nsIStyleSheetService"); michael@0: XPCOMUtils.defineLazyServiceGetter(window, "gHistSvc", michael@0: "@mozilla.org/browser/nav-history-service;1", michael@0: "nsINavHistoryService", michael@0: "nsIBrowserHistory"); michael@0: XPCOMUtils.defineLazyServiceGetter(window, "gURIFixup", michael@0: "@mozilla.org/docshell/urifixup;1", michael@0: "nsIURIFixup"); michael@0: XPCOMUtils.defineLazyServiceGetter(window, "gFaviconService", michael@0: "@mozilla.org/browser/favicon-service;1", michael@0: "nsIFaviconService"); michael@0: XPCOMUtils.defineLazyServiceGetter(window, "gFocusManager", michael@0: "@mozilla.org/focus-manager;1", michael@0: "nsIFocusManager"); michael@0: XPCOMUtils.defineLazyServiceGetter(window, "gEventListenerService", michael@0: "@mozilla.org/eventlistenerservice;1", michael@0: "nsIEventListenerService"); michael@0: #ifdef MOZ_CRASHREPORTER michael@0: XPCOMUtils.defineLazyServiceGetter(this, "CrashReporter", michael@0: "@mozilla.org/xre/app-info;1", michael@0: "nsICrashReporter"); michael@0: #endif michael@0: michael@0: /* michael@0: * window.Rect is used by michael@0: * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-Rect michael@0: * so it is not possible to set a lazy getter for Geometry.jsm. michael@0: */ michael@0: Cu.import("resource://gre/modules/Geometry.jsm"); michael@0: /* michael@0: * Browser scripts michael@0: */ michael@0: let ScriptContexts = {}; michael@0: [ michael@0: ["ContentAreaObserver", "chrome://browser/content/ContentAreaObserver.js"], michael@0: ["WebProgress", "chrome://browser/content/WebProgress.js"], michael@0: ["FindHelperUI", "chrome://browser/content/helperui/FindHelperUI.js"], michael@0: ["FormHelperUI", "chrome://browser/content/helperui/FormHelperUI.js"], michael@0: ["BrowserTouchHandler", "chrome://browser/content/BrowserTouchHandler.js"], michael@0: ["AlertsHelper", "chrome://browser/content/helperui/AlertsHelper.js"], michael@0: ["AutofillMenuUI", "chrome://browser/content/helperui/MenuUI.js"], michael@0: ["ContextMenuUI", "chrome://browser/content/helperui/MenuUI.js"], michael@0: ["MenuControlUI", "chrome://browser/content/helperui/MenuUI.js"], michael@0: ["MenuPopup", "chrome://browser/content/helperui/MenuUI.js"], michael@0: ["IndexedDB", "chrome://browser/content/helperui/IndexedDB.js"], michael@0: ["OfflineApps", "chrome://browser/content/helperui/OfflineApps.js"], michael@0: ["SelectHelperUI", "chrome://browser/content/helperui/SelectHelperUI.js"], michael@0: ["SelectionHelperUI", "chrome://browser/content/helperui/SelectionHelperUI.js"], michael@0: ["SelectionPrototype", "chrome://browser/content/library/SelectionPrototype.js"], michael@0: ["ChromeSelectionHandler", "chrome://browser/content/helperui/ChromeSelectionHandler.js"], michael@0: ["CommandUpdater", "chrome://browser/content/commandUtil.js"], michael@0: ["ContextCommands", "chrome://browser/content/ContextCommands.js"], michael@0: ["Bookmarks", "chrome://browser/content/bookmarks.js"], michael@0: ["MetroDownloadsView", "chrome://browser/content/downloads.js"], michael@0: ["ConsolePanelView", "chrome://browser/content/console.js"], michael@0: ["Site", "chrome://browser/content/Site.js"], michael@0: ["TopSites", "chrome://browser/content/TopSites.js"], michael@0: ["Sanitizer", "chrome://browser/content/sanitize.js"], michael@0: ["SanitizeUI", "chrome://browser/content/sanitizeUI.js"], michael@0: ["SSLExceptions", "chrome://browser/content/exceptions.js"], michael@0: ["ItemPinHelper", "chrome://browser/content/helperui/ItemPinHelper.js"], michael@0: ["NavButtonSlider", "chrome://browser/content/NavButtonSlider.js"], michael@0: ["ContextUI", "chrome://browser/content/ContextUI.js"], michael@0: ["FlyoutPanelsUI", "chrome://browser/content/flyoutpanels/FlyoutPanelsUI.js"], michael@0: ["SettingsCharm", "chrome://browser/content/flyoutpanels/SettingsCharm.js"], michael@0: ["APZCObserver", "chrome://browser/content/apzc.js"], michael@0: ].forEach(function (aScript) { michael@0: let [name, script] = aScript; michael@0: XPCOMUtils.defineLazyGetter(window, name, function() { michael@0: let sandbox; michael@0: if (script in ScriptContexts) { michael@0: sandbox = ScriptContexts[script]; michael@0: } else { michael@0: sandbox = ScriptContexts[script] = {}; michael@0: Services.scriptloader.loadSubScript(script, sandbox); michael@0: } michael@0: return sandbox[name]; michael@0: }); michael@0: }); michael@0: #ifdef MOZ_SERVICES_SYNC michael@0: XPCOMUtils.defineLazyGetter(this, "Weave", function() { michael@0: Components.utils.import("resource://services-sync/main.js"); michael@0: return Weave; michael@0: }); michael@0: #endif michael@0: michael@0: /* michael@0: * Delay load some global scripts using a custom namespace michael@0: */ michael@0: XPCOMUtils.defineLazyGetter(this, "GlobalOverlay", function() { michael@0: let GlobalOverlay = {}; michael@0: Services.scriptloader.loadSubScript("chrome://global/content/globalOverlay.js", GlobalOverlay); michael@0: return GlobalOverlay; michael@0: }); michael@0: michael@0: XPCOMUtils.defineLazyGetter(this, "ContentAreaUtils", function() { michael@0: let ContentAreaUtils = {}; michael@0: Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", ContentAreaUtils); michael@0: return ContentAreaUtils; michael@0: });