Name Description Size
AboutNewTab.jsm init - Initializes an instance of Activity Stream if one doesn't exist already and creates the instance of Remote Page Manager which Activity Stream uses for message passing. @param {obj} pageListener - Optional argument. An existing instance of RemotePages which Activity Stream has previously made, and we would like to re-use. 8581
AsyncTabSwitcher.jsm The tab switcher is responsible for asynchronously switching tabs in e10s. It waits until the new tab is ready (i.e., the layer tree is available) before switching to it. Then it unloads the layer tree for the old tab. The tab switcher is a state machine. For each tab, it maintains state about whether the layer tree for the tab is available, being loaded, being unloaded, or unavailable. It also keeps track of the tab currently being displayed, the tab it's trying to load, and the tab the user has asked to switch to. The switcher object is created upon tab switch. It is released when there are no pending tabs to load or unload. The following general principles have guided the design: 1. We only request one layer tree at a time. If the user switches to a different tab while waiting, we don't request the new layer tree until the old tab has loaded or timed out. 2. If loading the layers for a tab times out, we show the spinner and possibly request the layer tree for another tab if the user has requested one. 3. We discard layer trees on a delay. This way, if the user is switching among the same tabs frequently, we don't continually load the same tabs. It's important that we always show either the spinner or a tab whose layers are available. Otherwise the compositor will draw an entirely black frame, which is very jarring. To ensure this never happens when switching away from a tab, we assume the old tab might still be drawn until a MozAfterPaint event occurs. Because layout and compositing happen asynchronously, we don't have any other way of knowing when the switch actually takes place. Therefore, we don't unload the old tab until the next MozAfterPaint event. 46147
BackgroundTask_uninstall.sys.mjs 1227
BrowserUIUtils.jsm -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 8106
BrowserUsageTelemetry.jsm -*- js-indent-level: 2; indent-tabs-mode: nil -*- 42779
BrowserWindowTracker.jsm This module tracks each browser window and informs network module the current selected tab's content outer window ID. 9254
ContentCrashHandlers.jsm BrowserWeakMap is exactly like a WeakMap, but expects <xul:browser> objects only. Under the hood, BrowserWeakMap keys the map off of the <xul:browser> permanentKey. If, however, the browser has never gotten a permanentKey, it falls back to keying on the <xul:browser> element itself. 36007
Discovery.jsm 4205
EveryWindow.jsm This module enables consumers to register callbacks on every current and future browser window. Usage: EveryWindow.registerCallback(id, init, uninit); EveryWindow.unregisterCallback(id); id is expected to be a unique value that identifies the consumer, to be used for unregistration. If the id is already in use, registerCallback returns false without doing anything. Each callback will receive the window for which it is presently being called as the first argument. init is called on every existing window at the time of registration, and on all future windows at browser-delayed-startup-finished. uninit is called on every existing window if requested at the time of unregistration, and at the time of domwindowclosed. If the window is closing, a second argument is passed with value `true`. 3350
ExtensionsUI.jsm 21727
FaviconLoader.jsm 19695
HomePage.jsm HomePage provides tools to keep track of the current homepage, and the applications's default homepage. It includes tools to insure that certain urls are ignored. As a result, all set/get requests for the homepage preferences should be routed through here. 11428
LaterRun.jsm 5574
metrics.yaml 2939 4598
NewTabPagePreloading.jsm This module is in charge of preloading 'new tab' pages for use when the user opens a new tab. 6353
OpenInTabsUtils.jsm Utility functions that can be used when opening multiple tabs, that can be called without any tabbrowser instance. 2486
PageActions.jsm Initializes PageActions. @param {boolean} addShutdownBlocker This param exists only for tests. Normally the default value of true must be used. 42080
PartnerLinkAttribution.jsm Sends an attribution request to an anonymizing proxy. @param {string} targetURL The URL we are routing through the anonmyzing proxy. @param {string} source The source of the anonmized request, e.g. "urlbar". @param {string} [campaignID] The campaign ID for attribution. This should be a valid path on the anonymizing proxy. For example, if `campaignID` was `foo`, we'd send an attribution request to Optional. If it's not provided, we default to the topsites campaign. 7379
PermissionUI.jsm PermissionUI is responsible for exposing both a prototype PermissionPrompt that can be used by arbitrary browser components and add-ons, but also hosts the implementations of built-in permission prompts. If you're developing a feature that requires web content to ask for special permissions from the user, this module is for you. Suppose a system add-on wants to add a new prompt for a new request for getting more low-level access to the user's sound card, and the permission request is coming up from content by way of the nsContentPermissionHelper. The system add-on could then do the following: const { Integration } = ChromeUtils.importESModule( "resource://gre/modules/Integration.sys.mjs" ); const { PermissionUI } = ChromeUtils.import( "resource:///modules/PermissionUI.jsm" ); const SoundCardIntegration = (base) => ({ __proto__: base, createPermissionPrompt(type, request) { if (type != "sound-api") { return super.createPermissionPrompt(...arguments); } return { __proto__: PermissionUI.PermissionPromptForRequestPrototype, get permissionKey() { return "sound-permission"; } // etc - see the documentation for PermissionPrompt for // a better idea of what things one can and should override. } }, }); // Add-on startup: Integration.contentPermission.register(SoundCardIntegration); // ... // Add-on shutdown: Integration.contentPermission.unregister(SoundCardIntegration); Note that PermissionPromptForRequestPrototype must be used as the prototype, since the prompt is wrapping an nsIContentPermissionRequest, and going through nsIContentPermissionPrompt. It is, however, possible to take advantage of PermissionPrompt without having to go through nsIContentPermissionPrompt or with a nsIContentPermissionRequest. The PermissionPromptPrototype can be imported, subclassed, and have prompt() called directly, without the caller having called into createPermissionPrompt. 42683
PingCentre.jsm Observe various notifications and send them to a telemetry endpoint. @param {Object} options @param {string} options.topic - a unique ID for users of PingCentre to distinguish their data on the server side. 5004
ProcessHangMonitor.jsm -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 20614
Sanitizer.sys.mjs Whether we should sanitize on shutdown. 38435
SelectionChangedMenulist.jsm 966
SiteDataManager.jsm Retrieve the latest site data and store it in SiteDataManager. Updating site data is a *very* expensive operation. This method exists so that consumers can manually decide when to update, most methods on SiteDataManager will not trigger updates automatically. It is *highly discouraged* to await on this function to finish before showing UI. Either trigger the update some time before the data is needed or use the entryUpdatedCallback parameter to update the UI async. @param {entryUpdatedCallback} a function to be called whenever a site is added or updated. This can be used to e.g. fill a UI that lists sites without blocking on the entire update to finish. @returns a Promise that resolves when updating is done. 21819
SitePermissions.jsm A helper module to manage temporary permissions. Permissions are keyed by browser, so methods take a Browser element to identify the corresponding permission set. This uses a WeakMap to key browsers, so that entries are automatically cleared once the browser stops existing (once there are no other references to the browser object); 41356
TabsList.jsm Populate the popup with menuitems and setup the listeners. 13738
TabUnloader.jsm -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 16517
TransientPrefs.jsm Use for preferences that should only be visible when they've been modified. When reset to their default state, they remain visible until restarting the application. 775
webrtcUI.jsm 41705
WindowsJumpLists.jsm -*- indent-tabs-mode: nil; js-indent-level: 2 -*- 18135
WindowsPreviewPerTab.jsm This module implements the front end behavior for AeroPeek. Starting in Windows Vista, the taskbar began showing live thumbnail previews of windows when the user hovered over the window icon in the taskbar. Starting with Windows 7, the taskbar allows an application to expose its tabbed interface in the taskbar by showing thumbnail previews rather than the default window preview. Additionally, when a user hovers over a thumbnail (tab or window), they are shown a live preview of the window (or tab + its containing window). In Windows 7, a title, icon, close button and optional toolbar are shown for each preview. This feature does not make use of the toolbar. For window previews, the title is the window title and the icon the window icon. For tab previews, the title is the page title and the page's favicon. In both cases, the close button "does the right thing." The primary objects behind this feature are nsITaskbarTabPreview and nsITaskbarPreviewController. Each preview has a controller. The controller responds to the user's interactions on the taskbar and provides the required data to the preview for determining the size of the tab and thumbnail. The PreviewController class implements this interface. The preview will request the controller to provide a thumbnail or preview when the user interacts with the taskbar. To reduce the overhead of drawing the tab area, the controller implementation caches the tab's contents in a <canvas> element. If no previews or thumbnails have been requested for some time, the controller will discard its cached tab contents. Screen real estate is limited so when there are too many thumbnails to fit on the screen, the taskbar stops displaying thumbnails and instead displays just the title, icon and close button in a similar fashion to previous versions of the taskbar. If there are still too many previews to fit on the screen, the taskbar resorts to a scroll up and scroll down button pair to let the user scroll through the list of tabs. Since this is undoubtedly inconvenient for users with many tabs, the AeroPeek objects turns off all of the tab previews. This tells the taskbar to revert to one preview per window. If the number of tabs falls below this magic threshold, the preview-per-tab behavior returns. There is no reliable way to determine when the scroll buttons appear on the taskbar, so a magic pref-controlled number determines when this threshold has been crossed. 26339
ZoomUI.jsm Gets the global browser.content.full-zoom content preference. @returns Promise<prefValue> Resolves to the preference value (float) when done. 7020