ConduitsChild.jsm |
This @file implements the child side of Conduits, an abstraction over
Fission IPC for extension API subject. See {@link ConduitsParent.jsm}
for more details about the overall design.
@typedef {object} MessageData
@prop {ConduitID} [target]
@prop {ConduitID} [sender]
@prop {boolean} query
@prop {object} arg
|
5608 |
ConduitsParent.jsm |
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
@prop {ConduitID} id Globally unique across all processes.
@prop {string[]} [recv]
@prop {string[]} [send]
@prop {string[]} [query]
@prop {string[]} [cast]
Lists of recvX, sendX, queryX and castX methods this subject will use.
@typedef {"messenger"|"port"|"tab"} BroadcastKind
Kinds of broadcast targeting filters.
@example:
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 });
}
|
11443 |
DocumentObserver.h |
|
1956 |
Extension.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
90020 |
ExtensionActions.jsm |
Common base class for Page and Browser actions. |
19316 |
ExtensionActivityLog.jsm |
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 {string} timeStamp The timestamp for the activity.
|
3621 |
ExtensionChild.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
28995 |
ExtensionChildDevToolsUtils.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
3416 |
ExtensionCommon.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
74008 |
ExtensionContent.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
36630 |
ExtensionPageChild.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
13860 |
ExtensionParent.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
58299 |
ExtensionPermissions.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
11008 |
ExtensionPolicyService.cpp |
ExtensionPolicyService
*************************************************************************** |
21906 |
ExtensionPolicyService.h |
|
3966 |
ExtensionPreferencesManager.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
20749 |
ExtensionProcessScript.jsm |
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.
|
12663 |
ExtensionSettingsStore.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
22152 |
ExtensionShortcuts.jsm |
exported ExtensionShortcuts |
12625 |
ExtensionStorage.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
13502 |
ExtensionStorageIDB.jsm |
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.
|
28877 |
ExtensionStorageSync.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
6007 |
ExtensionStorageSyncKinto.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
45215 |
ExtensionTelemetry.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
6700 |
ExtensionTestCommon.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
13353 |
ExtensionUtils.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
9586 |
ExtensionXPCShellUtils.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
28588 |
FindContent.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
7538 |
MatchGlob.h |
|
3207 |
MatchPattern.cpp |
AtomSet
*************************************************************************** |
20655 |
MatchPattern.h |
|
8755 |
MatchURLFilters.jsm |
exported MatchURLFilters |
5340 |
MessageChannel.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
37200 |
MessageManagerProxy.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
6435 |
NativeManifests.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
5614 |
NativeMessaging.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
11803 |
PerformanceCounters.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
4483 |
ProfilerGetSymbols-worker.js |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
4018 |
ProfilerGetSymbols.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
5835 |
ProxyChannelFilter.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
12060 |
Schemas.jsm |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
99675 |
WebExtensionContentScript.h |
|
6801 |
WebExtensionPolicy.cpp |
moz-extension: blob: filesystem: " \
"'unsafe-eval' 'unsafe-inline'; " \
"object-src 'self' https://* moz-extension: blob: filesystem:;"
#define BASE_CSP_PREF_V3 \
"extensions.webextensions.base-content-security-policy.v3"
#define DEFAULT_BASE_CSP_V3 \
"script-src 'self'; object-src 'self'; " \
"style-src 'self'; worker-src 'self';"
static const char kRestrictedDomainPref[] =
"extensions.webextensions.restrictedDomains";
static inline ExtensionPolicyService& EPS() {
return ExtensionPolicyService::GetSingleton();
}
static nsISubstitutingProtocolHandler* Proto() {
static nsCOMPtr<nsISubstitutingProtocolHandler> sHandler;
if (MOZ_UNLIKELY(!sHandler)) {
nsCOMPtr<nsIIOService> ios = do_GetIOService();
MOZ_RELEASE_ASSERT(ios);
nsCOMPtr<nsIProtocolHandler> handler;
ios->GetProtocolHandler(kProto, getter_AddRefs(handler));
sHandler = do_QueryInterface(handler);
MOZ_RELEASE_ASSERT(sHandler);
ClearOnShutdown(&sHandler);
}
return sHandler;
}
bool ParseGlobs(GlobalObject& aGlobal, Sequence<OwningMatchGlobOrString> aGlobs,
nsTArray<RefPtr<MatchGlob>>& aResult, ErrorResult& aRv) {
for (auto& elem : aGlobs) {
if (elem.IsMatchGlob()) {
aResult.AppendElement(elem.GetAsMatchGlob());
} else {
RefPtr<MatchGlob> glob =
MatchGlob::Constructor(aGlobal, elem.GetAsString(), true, aRv);
if (aRv.Failed()) {
return false;
}
aResult.AppendElement(glob);
}
}
return true;
}
enum class ErrorBehavior {
CreateEmptyPattern,
Fail,
};
already_AddRefed<MatchPatternSet> ParseMatches(
GlobalObject& aGlobal,
const OwningMatchPatternSetOrStringSequence& aMatches,
const MatchPatternOptions& aOptions, ErrorBehavior aErrorBehavior,
ErrorResult& aRv) {
if (aMatches.IsMatchPatternSet()) {
return do_AddRef(aMatches.GetAsMatchPatternSet().get());
}
const auto& strings = aMatches.GetAsStringSequence();
nsTArray<OwningStringOrMatchPattern> patterns;
if (!patterns.SetCapacity(strings.Length(), fallible)) {
aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
return nullptr;
}
for (auto& string : strings) {
OwningStringOrMatchPattern elt;
elt.SetAsString() = string;
patterns.AppendElement(elt);
}
RefPtr<MatchPatternSet> result =
MatchPatternSet::Constructor(aGlobal, patterns, aOptions, aRv);
if (aRv.Failed() && aErrorBehavior == ErrorBehavior::CreateEmptyPattern) {
aRv.SuppressException();
result = MatchPatternSet::Constructor(aGlobal, {}, aOptions, aRv);
}
return result.forget();
}
/*****************************************************************************
WebExtensionPolicy
*************************************************************************** |
27919 |
WebExtensionPolicy.h |
|
6929 |
WebNavigation.jsm |
Support nsIObserver interface to observe the urlbar autocomplete events used
to keep track of the urlbar user interaction.
|
16450 |
WebNavigationContent.js |
eslint-env mozilla/frame-script |
11983 |
WebNavigationFrames.jsm |
exported WebNavigationFrames |
3631 |
child |
|
12 |
docs |
|
11 |
dummy.xhtml |
|
266 |
ext-browser-content.js |
eslint-env mozilla/frame-script |
10878 |
ext-toolkit.json |
|
6924 |
extensionProcessScriptLoader.js |
|
293 |
extensions-toolkit.manifest |
|
835 |
jar.mn |
|
3734 |
moz.build |
|
2977 |
mozIExtensionProcessScript.idl |
|
733 |
onExtensionBrowser.js |
-*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- |
470 |
parent |
|
34 |
profiler_get_symbols.js |
@param {WasmMemBuffer} binary_data
@param {WasmMemBuffer} debug_data
@param {string} breakpad_id
@returns {CompactSymbolTable}
|
13464 |
schemas |
|
43 |
storage |
|
6 |
test |
|
4 |
webrequest |
|
18 |
.eslintrc.js |
Silencing the error because ... |
7312 |