AboutNewTab.jsm |
init - Initializes an instance of Activity Stream if one doesn't exist already.
|
7021 |
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.
|
46579 |
BackgroundTask_uninstall.sys.mjs |
|
1227 |
BrowserUIUtils.jsm |
-*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- |
6885 |
BrowserUsageTelemetry.jsm |
-*- js-indent-level: 2; indent-tabs-mode: nil -*- |
44650 |
BrowserWindowTracker.jsm |
This module tracks each browser window and informs network module
the current selected tab's content outer window ID.
|
9060 |
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.
|
36009 |
Discovery.jsm |
|
4175 |
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 |
|
21175 |
FaviconLoader.jsm |
|
19694 |
FeatureCallout.sys.mjs |
Feature Callout fetches messages relevant to a given source and displays them
in the parent page pointing to the element they describe.
|
43017 |
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.
|
11426 |
LaterRun.jsm |
|
5568 |
metrics.yaml |
|
5299 |
moz.build |
|
4767 |
NewTabPagePreloading.jsm |
This module is in charge of preloading 'new tab' pages for use when
the user opens a new tab.
|
6373 |
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.
|
41935 |
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 https://topsites.mozilla.com/cid/foo.
Optional. If it's not provided, we default to the topsites campaign.
|
7292 |
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.import(
"resource:///modules/PermissionUI.jsm"
);
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.
|
41321 |
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.
|
5614 |
ProcessHangMonitor.jsm |
-*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- |
20612 |
Sanitizer.sys.mjs |
Whether we should sanitize on shutdown.
|
40392 |
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.
|
21817 |
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);
|
41792 |
TabsList.jsm |
Populate the popup with menuitems and setup the listeners.
|
14053 |
TabUnloader.jsm |
-*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- |
16517 |
test |
|
|
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 |
URILoadingHelper.sys.mjs |
|
25251 |
webrtcUI.jsm |
|
41558 |
WindowsJumpLists.jsm |
-*- indent-tabs-mode: nil; js-indent-level: 2 -*- |
18300 |
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.
|
26330 |
ZoomUI.jsm |
Gets the global browser.content.full-zoom content preference.
@returns Promise<prefValue>
Resolves to the preference value (float) when done.
|
7019 |