.eslintrc.js |
Silencing the error because ... |
7082 |
child |
|
|
components.conf |
|
686 |
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 |
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 |
docs |
|
|
DocumentObserver.h |
|
1955 |
dummy.xhtml |
|
267 |
ext-browser-content.js |
eslint-env mozilla/frame-script |
8609 |
ext-toolkit.json |
|
7433 |
Extension.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
137927 |
ExtensionActions.sys.mjs |
Common base class for Page and Browser actions. |
22354 |
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.
|
3410 |
ExtensionChild.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
31778 |
ExtensionChildDevToolsUtils.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
3298 |
ExtensionCommon.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
96117 |
ExtensionContent.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
47315 |
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
|
91271 |
ExtensionDNRLimits.sys.mjs |
NOTE: this limit may be increased in the future, see
https://bugzilla.mozilla.org/show_bug.cgi?id=1894119
|
3313 |
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.
|
69192 |
ExtensionMenus.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
19700 |
ExtensionPageChild.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
15225 |
ExtensionParent.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
73838 |
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.
|
3051 |
ExtensionPermissions.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
31537 |
ExtensionPolicyService.cpp |
ExtensionPolicyService
*************************************************************************** |
26904 |
ExtensionPolicyService.h |
|
4644 |
ExtensionPreferencesManager.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
23000 |
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.
|
16904 |
extensionProcessScriptLoader.js |
eslint-env mozilla/process-script |
351 |
extensions-toolkit.manifest |
|
835 |
ExtensionsChild.cpp |
static |
2132 |
ExtensionsChild.h |
|
984 |
ExtensionScriptingStore.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
11536 |
ExtensionSettingsStore.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
22108 |
ExtensionShortcuts.sys.mjs |
@type {Lazy} |
16743 |
ExtensionsParent.cpp |
|
4159 |
ExtensionsParent.h |
|
2006 |
ExtensionStorage.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
19541 |
ExtensionStorageIDB.sys.mjs |
@type {Lazy} |
28834 |
ExtensionStorageSync.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
6734 |
ExtensionStorageSyncKinto.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
45741 |
ExtensionTaskScheduler.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
10154 |
ExtensionTelemetry.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
12042 |
ExtensionTestCommon.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
27297 |
ExtensionUserScripts.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
22554 |
ExtensionUserScriptsContent.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
9523 |
ExtensionUtils.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
9848 |
ExtensionWorkerChild.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
25954 |
ExtensionXPCShellUtils.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
20754 |
extIWebNavigation.idl |
|
1230 |
FindContent.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
7610 |
jar.mn |
|
4141 |
MatchGlob.h |
|
3753 |
MatchPattern.cpp |
AtomSet
*************************************************************************** |
24400 |
MatchPattern.h |
|
11966 |
MatchURLFilters.sys.mjs |
|
5207 |
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 |
metrics.yaml |
|
21286 |
moz.build |
|
4116 |
mozIExtensionAPIRequestHandling.idl |
|
7614 |
mozIExtensionProcessScript.idl |
|
736 |
NativeManifests.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
5795 |
NativeMessaging.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
12561 |
parent |
|
|
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 -*- |
12446 |
schemas |
|
|
Schemas.sys.mjs |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
116349 |
storage |
|
|
test |
|
|
tsconfig.json |
|
3302 |
types |
|
|
WebExtensionContentScript.h |
|
7581 |
WebExtensionPolicy.cpp |
|
43043 |
WebExtensionPolicy.h |
|
13227 |
webidl-api |
|
|
WebNavigation.sys.mjs |
@type {Lazy} |
12272 |
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 |
webrequest |
|
|