Name Description Size Coverage
.eslintrc.mjs Silencing the error because ... 7406 -
child 96 %
components.conf 1215 -
ConduitsChild.sys.mjs This @file implements the child side of Conduits, an abstraction over Fission IPC for extension API subject. See {@link ConduitsParent.sys.mjs} for more details about the overall design. @typedef {object} MessageData @property {ConduitID} [target] @property {ConduitID} [sender] @property {boolean} query @property {object} arg @typedef {import("ConduitsParent.sys.mjs").ConduitAddress} ConduitAddress @typedef {import("ConduitsParent.sys.mjs").ConduitID} ConduitID 6382 96 %
ConduitsParent.sys.mjs This @file implements the parent side of Conduits, an abstraction over Fission IPC for extension Contexts, API managers, Ports/Messengers, and other types of "subjects" participating in implementation of extension APIs. Additionally, knowledge about conduits from all child processes is gathered here, and used together with the full CanonicalBrowsingContext tree to route IPC messages and queries directly to the right subjects. Each Conduit is tied to one subject, attached to a ConduitAddress descriptor, and exposes an API for sending/receiving via an actor, or multiple actors in case of the parent process. @typedef {number|string} ConduitID @typedef {object} ConduitAddress @property {ConduitID} [id] Globally unique across all processes. @property {string[]} [recv] @property {string[]} [send] @property {string[]} [query] @property {string[]} [cast] @property {*} [actor] @property {boolean} [verified] @property {string} [url] @property {number} [frameId] @property {string} [workerScriptURL] @property {number} [workerDescriptorId] @property {string} [extensionId] @property {string} [envType] @property {string} [instanceId] @property {number} [portId] @property {boolean} [native] @property {boolean} [source] @property {string} [reportOnClosed] Lists of recvX, sendX, queryX and castX methods this subject will use. @typedef {"messenger"|"port"|"tab"} BroadcastKind Kinds of broadcast targeting filters. @example ```js { init(actor) { this.conduit = actor.openConduit(this, { id: this.id, recv: ["recvAddNumber"], send: ["sendNumberUpdate"], }); }, recvAddNumber({ num }, { actor, sender }) { num += 1; this.conduit.sendNumberUpdate(sender.id, { num }); } } ``` 15210 94 %
docs -
DocumentObserver.h 1955 0 %
dummy.xhtml 296 -
ext-browser-content.js 8570 93 %
ext-toolkit.json 7077 -
Extension.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 153664 95 %
ExtensionActions.sys.mjs Common base class for Page and Browser actions. 23771 98 %
ExtensionActivityLog.sys.mjs Notify all listeners of an extension activity. @param {string} id The ID of the extension that caused the activity. @param {string} viewType The view type the activity is in. @param {string} type The type of the activity. @param {string} name The API name or path. @param {object} data Activity specific data. @param {Date} [timeStamp] The timestamp for the activity. 3411 95 %
ExtensionChild.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 31827 99 %
ExtensionChildDevToolsUtils.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3298 90 %
ExtensionCommon.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 94799 91 %
ExtensionContent.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 51580 98 %
ExtensionDNR.sys.mjs Whenever a request occurs, the rules of each RuleManager are matched against the request to determine the final action to take. The RequestEvaluator class is responsible for evaluating rules, and its behavior is described below. Short version: Find the highest-priority rule that matches the given request. If the request is not canceled, all matching allowAllRequests and modifyHeaders actions are returned. Longer version: Unless stated otherwise, the explanation below describes the behavior within an extension. An extension can specify rules, optionally in multiple rulesets. The ability to have multiple ruleset exists to support bulk updates of rules. Rulesets are NOT independent - rules from different rulesets can affect each other. When multiple rules match, the order between rules are defined as follows: - Ruleset precedence: session > dynamic > static (order from manifest.json). - Rules in ruleset precedence: ordered by rule.id, lowest (numeric) ID first. - Across all rules+rulesets: highest rule.priority (default 1) first, action precedence if rule priority are the same. The primary documented way for extensions to describe precedence is by specifying rule.priority. Between same-priority rules, their precedence is dependent on the rule action. The ruleset/rule ID precedence is only used to have a defined ordering if multiple rules have the same priority+action. Rule actions have the following order of precedence and meaning: - "allow" can be used to ignore other same-or-lower-priority rules. - "allowAllRequests" (for main_frame / sub_frame resourceTypes only) has the same effect as allow, but also applies to (future) subresource loads in the document (including descendant frames) generated from the request. - "block" cancels the matched request. - "upgradeScheme" upgrades the scheme of the request. - "redirect" redirects the request. - "modifyHeaders" rewrites request/response headers. The matched rules are evaluated in two passes: 1. findMatchingRules(): Find the highest-priority rule(s), and choose the action with the highest precedence (across all rulesets, any action except modifyHeaders). This also accounts for any allowAllRequests from an ancestor frame. 2. getMatchingModifyHeadersRules(): Find matching rules with the "modifyHeaders" action, minus ignored rules. Reaching this step implies that the request was not canceled, so either the first step did not yield a rule, or the rule action is "allow" or "allowAllRequests" (i.e. ignore same-or-lower-priority rules). If an extension does not have sufficient permissions for the action, the resulting action is ignored. The above describes the evaluation within one extension. When a sequence of (multiple) extensions is given, they may return conflicting actions in the first pass. This is resolved by choosing the action with the following order of precedence, in RequestEvaluator.evaluateRequest(): - block - redirect / upgradeScheme - allow / allowAllRequests 93449 98 %
ExtensionDNRLimits.sys.mjs NOTE: this limit may be increased in the future, see https://bugzilla.mozilla.org/show_bug.cgi?id=1894119 3166 100 %
ExtensionDNRStore.sys.mjs Internal representation of the enabled static rulesets (used in StoreData and Store methods type signatures). @typedef {object} EnabledStaticRuleset @inner @property {number} idx Represent the position of the static ruleset in the manifest `declarative_net_request.rule_resources` array. @property {Array<Rule>} rules Represent the array of the DNR rules associated with the static ruleset. 69561 91 %
ExtensionMenus.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 19600 94 %
ExtensionPageChild.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 15275 93 %
ExtensionParent.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 76694 95 %
ExtensionPermissionMessages.sys.mjs Localization object holding the fluent definitions of permission descriptions of WebExtension APIs defined in toolkit. This is exported to allow builds (e.g. Thunderbird) to extend or modify the object via its addResourceIds() method. 3926 100 %
ExtensionPermissions.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 32511 95 %
ExtensionPolicyService.cpp ExtensionPolicyService *************************************************************************** 26846 84 %
ExtensionPolicyService.h 4607 90 %
ExtensionPreferencesManager.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 22994 94 %
ExtensionProcessScript.sys.mjs This script contains the minimum, skeleton content process code that we need in order to lazily load other extension modules when they are first necessary. Anything which is not likely to be needed immediately, or shortly after startup, in *every* browser process live outside of this file. 16881 92 %
extensionProcessScriptLoader.js 310 100 %
extensions-toolkit.manifest 835 -
ExtensionsChild.cpp static 2132 97 %
ExtensionsChild.h 984 100 %
ExtensionScriptingStore.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 11628 100 %
ExtensionSettingsStore.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 22195 94 %
ExtensionShortcuts.sys.mjs An instance of this class is assigned to the shortcuts property of each active webextension that has commands defined. It manages loading any updated shortcuts along with the ones defined in the manifest and registering them to a browser window. It also provides the list, update and reset APIs for the browser.commands interface and the about:addons manage shortcuts page. 16305 99 %
ExtensionsParent.cpp 4131 100 %
ExtensionsParent.h 2006 50 %
ExtensionStorage.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 20516 95 %
ExtensionStorageIDB.sys.mjs Get the DOMException error name for a given error object. @param {Error | undefined} error The Error object to convert into a string, or undefined if there was no error. @returns {string | undefined} The DOMException error name (sliced to a maximum of 80 chars), "OtherError" if the error object is not a DOMException instance, or `undefined` if there wasn't an error. 35573 95 %
ExtensionStorageSync.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5085 100 %
ExtensionStorageSyncKinto.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 45889 95 %
ExtensionTaskScheduler.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10154 100 %
ExtensionTelemetry.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10072 73 %
ExtensionTestCommon.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 27494 -
ExtensionUserScripts.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 23541 98 %
ExtensionUserScriptsContent.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9896 99 %
ExtensionUtils.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10303 95 %
ExtensionWorkerChild.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 25962 86 %
ExtensionXPCShellUtils.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 20730 -
extIWebNavigation.idl 1230 -
FindContent.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 7661 93 %
jar.mn 4164 -
MatchGlob.h 3753 86 %
MatchPattern.cpp AtomSet *************************************************************************** 24364 94 %
MatchPattern.h 11906 87 %
MatchURLFilters.sys.mjs 5207 97 %
MessageChannel.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 36993 -
MessageManagerProxy.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 6360 84 %
metrics.yaml 48988 -
moz.build 4741 -
mozIExtensionAPIRequestHandling.idl 7614 -
mozIExtensionProcessScript.idl 736 -
NativeManifests.sys.mjs -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 6759 98 %
NativeMessaging.sys.mjs -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- 15154 93 %
NativeMessagingPortal.cpp static 26707 82 %
NativeMessagingPortal.h 2921 -
nsINativeMessagingPortal.idl An interface to talk to the WebExtensions XDG desktop portal, for sandboxed browsers (e.g. packaged as a snap or a flatpak). See https://github.com/flatpak/xdg-desktop-portal/issues/655. 3357 -
parent 95 %
PExtensions.ipdl A generic protocol used by the extension framework for process-level IPC. A child instance is created at startup in the parent process and each content child process, which can be accessed via `mozilla::extensions::ExtensionsChild::Get()`. 1986 -
ProxyChannelFilter.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 13713 92 %
schemas -
Schemas.sys.mjs -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 120072 89 %
storage 100 %
test -
tsconfig.json 282 -
types -
WebExtensionContentScript.h 8163 94 %
WebExtensionPolicy.cpp 46387 89 %
WebExtensionPolicy.h 13891 92 %
webidl-api 83 %
WebNavigation.sys.mjs @type {Map<string, Set<callback>>} 12559 93 %
WebNavigationFrames.sys.mjs The FrameDetail object which represents a frame in WebExtensions APIs. @typedef {object} FrameDetail @inner @property {number} frameId - Represents the numeric id which identify the frame in its tab. @property {number} parentFrameId - Represents the numeric id which identify the parent frame. @property {string} url - Represents the current location URL loaded in the frame. @property {boolean} errorOccurred - Indicates whether an error is occurred during the last load happened on this frame (NOT YET SUPPORTED). 2624 97 %
webrequest 88 %
WPTEventsChild.sys.mjs 1912 89 %
WPTEventsParent.sys.mjs 3102 94 %