Name Description Size
AboutNewTab.sys.mjs init - Initializes an instance of Activity Stream if one doesn't exist already. 6916
BackgroundTask_install.sys.mjs This task ought to have an ephemeral profile and should not apply updates. These settings are controlled externally, by `BackgroundTasks::IsUpdatingTaskName` and `BackgroundTasks::IsEphemeralProfileTaskName`. 1005
BackgroundTask_uninstall.sys.mjs This task ought to have an ephemeral profile and should not apply updates. These settings are controlled externally, by `BackgroundTasks::IsUpdatingTaskName` and `BackgroundTasks::IsEphemeralProfileTaskName`. 1717
BrowserUIUtils.sys.mjs -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 6975
BrowserUsageTelemetry.sys.mjs -*- js-indent-level: 2; indent-tabs-mode: nil -*- 45912
BrowserWindowTracker.sys.mjs This module tracks each browser window and informs network module the current selected tab's content outer window ID. 12978
ContentCrashHandlers.sys.mjs 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. 35770
Discovery.sys.mjs 4101
EveryWindow.sys.mjs 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`. 3561
ExtensionsUI.sys.mjs 22945
FaviconLoader.sys.mjs 19619
FirefoxBridgeExtensionUtils.sys.mjs Default implementation of the helper class to assist in deleting the firefox protocols. See maybeDeleteBridgeProtocolRegistryEntries for more info. 8553
HomePage.sys.mjs 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. 11237
LaterRun.sys.mjs 6217
metrics.yaml 6223 4537
PageActions.sys.mjs Initializes PageActions. @param {boolean} addShutdownBlocker This param exists only for tests. Normally the default value of true must be used. 42381
PartnerLinkAttribution.sys.mjs 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. 2603
PermissionUI.sys.mjs 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.importESModule( "resource:///modules/PermissionUI.sys.mjs" ); const SoundCardIntegration = base => { let soundCardObj = { createPermissionPrompt(type, request) { if (type != "sound-api") { return super.createPermissionPrompt(...arguments); } let permissionPrompt = { get permissionKey() { return "sound-permission"; } // etc - see the documentation for PermissionPrompt for // a better idea of what things one can and should override. }; Object.setPrototypeOf( permissionPrompt, PermissionUI.PermissionPromptForRequest ); return permissionPrompt; }, }; Object.setPrototypeOf(soundCardObj, base); return soundCardObj; }; // Add-on startup: Integration.contentPermission.register(SoundCardIntegration); // ... // Add-on shutdown: Integration.contentPermission.unregister(SoundCardIntegration); Note that PermissionPromptForRequest 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 PermissionPrompt can be imported, subclassed, and have prompt() called directly, without the caller having called into createPermissionPrompt. 41345
pings.yaml 878
ProcessHangMonitor.sys.mjs -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 20801
Sanitizer.sys.mjs Whether we should sanitize on shutdown. 50672
SelectionChangedMenulist.sys.mjs 904
SiteDataManager.sys.mjs 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. 21774
SitePermissions.sys.mjs 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); 41776
TransientPrefs.sys.mjs 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. 634
URILoadingHelper.sys.mjs 27017
webrtcUI.sys.mjs 37934
WindowsJumpLists.sys.mjs -*- indent-tabs-mode: nil; js-indent-level: 2 -*- 24608
WindowsPreviewPerTab.sys.mjs 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. 25930
ZoomUI.sys.mjs Gets the global browser.content.full-zoom content preference. @returns Promise<prefValue> Resolves to the preference value (float) when done. 6987