BrowserBridgeChild.cpp |
static |
8058 |
BrowserBridgeChild.h |
BrowserBridgeChild implements the child actor part of the PBrowserBridge
protocol. See PBrowserBridge for more information.
|
3874 |
BrowserBridgeHost.cpp |
|
2797 |
BrowserBridgeHost.h |
BrowserBridgeHost manages a remote browser from a content process.
It is used via the RemoteBrowser interface in nsFrameLoader and proxies
work to the chrome process via PBrowserBridge.
See `dom/docs/Fission-IPC-Diagram.svg` for an overview of the DOM IPC
actors.
|
2225 |
BrowserBridgeParent.cpp |
aIsTopLevel |
11213 |
BrowserBridgeParent.h |
BrowserBridgeParent implements the parent actor part of the PBrowserBridge
protocol. See PBrowserBridge for more information.
|
3930 |
BrowserChild.cpp |
|
143225 |
BrowserChild.h |
BrowserChild implements the child actor part of the PBrowser protocol. See
PBrowser for more information.
|
35313 |
BrowserHost.cpp |
attribute boolean renderLayers; |
7706 |
BrowserHost.h |
BrowserHost manages a remote browser from the chrome process.
It is used via the RemoteBrowser interface in nsFrameLoader and supports
operations over the tree of BrowserParent/BrowserBridgeParent's.
See `dom/docs/Fission-IPC-Diagram.svg` for an overview of the DOM IPC
actors.
|
3356 |
BrowserParent.cpp |
|
150921 |
BrowserParent.h |
BrowserParent implements the parent actor part of the PBrowser protocol. See
PBrowser for more information.
|
39605 |
ClonedErrorHolder.cpp |
|
13096 |
ClonedErrorHolder.h |
|
3825 |
CoalescedInputData.cpp |
|
1534 |
CoalescedInputData.h |
|
2074 |
CoalescedMouseData.cpp |
|
3545 |
CoalescedMouseData.h |
|
1442 |
CoalescedTouchData.cpp |
|
5124 |
CoalescedTouchData.h |
|
1551 |
CoalescedWheelData.cpp |
|
2096 |
CoalescedWheelData.h |
|
970 |
ColorPickerParent.cpp |
|
1919 |
ColorPickerParent.h |
|
1876 |
components.conf |
|
712 |
ContentChild.cpp |
|
173620 |
ContentChild.h |
|
34528 |
ContentParent.cpp |
|
279259 |
ContentParent.h |
Create a ContentParent suitable for use later as a content process.
|
69162 |
ContentParent_NotifyUpdatedDictionaries.h |
|
844 |
ContentProcess.cpp |
XP_MACOSX && MOZ_SANDBOX |
5922 |
ContentProcess.h |
ContentProcess is a singleton on the content process which represents
the main thread where tab instances live.
|
1453 |
ContentProcessManager.cpp |
static |
4415 |
ContentProcessManager.h |
Add a new content process into the map.
|
2861 |
CSPMessageUtils.cpp |
|
1291 |
CSPMessageUtils.h |
|
833 |
CustomElementTypes.ipdlh |
|
957 |
DocShellMessageUtils.cpp |
|
1632 |
DocShellMessageUtils.h |
|
1786 |
DOMTypes.ipdlh |
Cross-process representation for postMessage() style payloads where Blobs may
be referenced/"cloned" and (optionally) messageports transferred. Use
StructuredCloneData in your code to convert between this wire representation
and the StructuredCloneData StructuredCloneHolder-subclass.
|
10308 |
EffectsInfo.h |
An EffectsInfo contains information for a remote browser about the graphical
effects that are being applied to it by ancestor browsers in different
processes.
|
2475 |
FilePickerMessageUtils.h |
|
1286 |
FilePickerParent.cpp |
|
8591 |
FilePickerParent.h |
|
3179 |
gtest |
|
|
IdType.h |
|
1494 |
InProcessChild.h |
The `InProcessChild` class represents the child half of a main-thread to
main-thread actor.
The `PInProcess` actor should be used as an alternate manager to `PContent`
for async actors which want to communicate uniformly between Content->Chrome
and Chrome->Chrome situations.
|
2456 |
InProcessImpl.cpp |
static |
9250 |
InProcessParent.h |
The `InProcessParent` class represents the parent half of a main-thread to
main-thread actor.
The `PInProcess` actor should be used as an alternate manager to `PContent`
for async actors which want to communicate uniformly between Content->Chrome
and Chrome->Chrome situations.
|
2538 |
IPCTransferable.ipdlh |
|
2296 |
jsactor |
|
|
JSOracleChild.cpp |
static |
1620 |
JSOracleChild.h |
|
1786 |
JSOracleParent.cpp |
static |
2698 |
JSOracleParent.h |
|
1399 |
JSValidatorChild.cpp |
|
7721 |
JSValidatorChild.h |
|
2055 |
JSValidatorParent.cpp |
static |
3575 |
JSValidatorParent.h |
|
1214 |
JSValidatorUtils.cpp |
static |
940 |
JSValidatorUtils.h |
|
805 |
LoginDetectionService.cpp |
|
5155 |
LoginDetectionService.h |
Detect whether the user is 'possibly' logged in to a site, and add the
HighValue permission to the permission manager. We say 'possibly' because
the detection is done in a very loose way. For example, for sites that have
an associated login stored in the password manager are considered `logged in`
by the service, which is not always true in terms of whether the users is
really logged in to the site.
|
1929 |
ManifestMessagesChild.sys.mjs |
Manifest obtainer frame script implementation of:
http://www.w3.org/TR/appmanifest/#obtaining
It searches a top-level browsing context for
a <link rel=manifest> element. Then fetches
and processes the linked manifest.
BUG: https://bugzilla.mozilla.org/show_bug.cgi?id=1083410
|
3221 |
MaybeDiscarded.h |
|
4430 |
MemMapSnapshot.cpp |
|
1165 |
MemMapSnapshot.h |
A helper class for creating a read-only snapshot of memory-mapped data.
The Init() method initializes a read-write memory mapped region of the given
size, which can be initialized with arbitrary data. The Finalize() method
remaps that region as read-only (and backs it with a read-only file
descriptor), and initializes an AutoMemMap with the new contents.
The file descriptor for the resulting AutoMemMap can be shared among
processes, to safely access a shared, read-only copy of the data snapshot.
|
1568 |
MemoryReportRequest.cpp |
static |
5798 |
MemoryReportRequest.h |
|
2289 |
MemoryReportTypes.ipdlh |
|
544 |
MMPrinter.cpp |
static |
3381 |
MMPrinter.h |
MMPrinter_h |
1825 |
moz.build |
|
6905 |
NativeThreadId.h |
|
518 |
nsIDOMProcessChild.idl |
Child actor interface for a process which can host DOM content.
Implemented by either `InProcessChild` for the parent process, or
`ContentChild` for a content process.
|
1864 |
nsIDOMProcessParent.idl |
Parent actor interface for a process which can host DOM content.
Implemented by either `InProcessParent` for the parent process, or
`ContentParent` for a content process.
|
1762 |
nsIHangReport.idl |
When a content process hangs, Gecko notifies "process-hang-report" observers
and passes an nsIHangReport for the subject parameter. There is at most one
nsIHangReport associated with a given content process. As long as the content
process stays stuck, the "process-hang-report" observer will continue to be
notified at regular intervals (approximately once per second). The content
process will continue to run uninhibitedly during this time.
|
1986 |
nsILoginDetectionService.idl |
called to initialize the login detection service.
|
597 |
PageLoadEventUtils.h |
Features utilized within a document, represented as bitfield in the pageload
event.
|
2538 |
PBrowser.ipdl |
|
46198 |
PBrowserBridge.ipdl |
A PBrowserBridge connects an iframe/browser in a content process to the
PBrowser that manages the embedded content.
See `dom/docs/Fission-IPC-Diagram.svg` for an overview of the DOM IPC
actors.
|
4440 |
PColorPicker.ipdl |
|
635 |
PContent.ipdl |
|
81161 |
PContentPermission.ipdlh |
|
423 |
PContentPermissionRequest.ipdl |
|
654 |
PCycleCollectWithLogs.ipdl |
|
551 |
PermissionMessageUtils.cpp |
|
1578 |
PermissionMessageUtils.h |
|
1293 |
PFilePicker.ipdl |
|
1328 |
PInProcess.ipdl |
PInProcess is intended for use as an alternative actor manager to PContent
for async actors which want to be used uniformly in both Content->Chrome and
Chrome->Chrome circumstances.
`mozilla::dom::InProcess{Parent, Child}::Singleton()` should be used to get
an instance of this actor.
|
957 |
PJSOracle.ipdl |
|
567 |
PJSValidator.ipdl |
|
1029 |
PProcessHangMonitor.ipdl |
|
1424 |
PreallocatedProcessManager.cpp |
This singleton class implements the static methods on
PreallocatedProcessManager.
|
14584 |
PreallocatedProcessManager.h |
This class manages a ContentParent that it starts up ahead of any particular
need. You can then call Take() to get this process and use it. Since we
already started it up, it should be ready for use faster than if you'd
created the process when you needed it.
This class watches the dom.ipc.processPrelaunch.enabled pref. If it changes
from false to true, it preallocates a process. If it changes from true to
false, it kills the preallocated process, if any.
We don't expect this pref to flip between true and false in production, but
flipping the pref is important for tests.
|
2567 |
PrefsTypes.ipdlh |
|
927 |
ProcessActor.cpp |
|
1297 |
ProcessActor.h |
|
1033 |
ProcessHangMonitor.cpp |
Basic architecture:
Each process has its own ProcessHangMonitor singleton. This singleton exists
as long as there is at least one content process in the system. Each content
process has a HangMonitorChild and the chrome process has one
HangMonitorParent per process. Each process (including the chrome process)
runs a hang monitoring thread. The PHangMonitor actors are bound to this
thread so that they never block on the main thread.
When the content process detects a hang, it posts a task to its hang thread,
which sends an IPC message to the hang thread in the parent. The parent
cancels any ongoing CPOW requests and then posts a runnable to the main
thread that notifies Firefox frontend code of the hang. The frontend code is
passed an nsIHangReport, which can be used to terminate the hang.
If the user chooses to terminate a script, a task is posted to the chrome
process's hang monitoring thread, which sends an IPC message to the hang
thread in the content process. That thread sets a flag to indicate that JS
execution should be terminated the next time it hits the interrupt
callback. A similar scheme is used for debugging slow scripts. If a content
process or plug-in needs to be terminated, the chrome process does so
directly, without messaging the content process.
|
43346 |
ProcessHangMonitor.h |
|
2780 |
ProcessHangMonitorIPC.h |
|
827 |
ProcessIsolation.cpp |
Helper class for caching the result of splitting prefs which are represented
as a comma-separated list of strings.
|
45761 |
ProcessIsolation.h |
Given a specific channel, determines which process the navigation should
complete in, and whether or not to perform a BrowsingContext-replace load
or enter the BFCache.
This method will always return a `NavigationIsolationOptions` even if the
current remote type is compatible. Compatibility with the current process
should be checked at the call-site. An error should only be returned in
exceptional circumstances, and should lead to the load being cancelled.
This method is only intended for use with document navigations.
|
4051 |
ProcessPriorityManager.cpp |
|
34878 |
ProcessPriorityManager.h |
This class sets the priority of subprocesses in response to explicit
requests and events in the system.
A process's priority changes e.g. when it goes into the background via
mozbrowser's setVisible(false). Process priority affects CPU scheduling and
also which processes get killed when we run out of memory.
After you call Initialize(), the only thing you probably have to do is call
SetProcessPriority on processes immediately after creating them in order to
set their initial priority. The ProcessPriorityManager takes care of the
rest.
|
3394 |
PropertyBagUtils.cpp |
|
8423 |
PropertyBagUtils.h |
Limited nsIVariant support. Not all types are implemented and only
nsIURI is implemented with nsIVariant::GetAsInterface.
|
1284 |
PTabContext.ipdlh |
|
1372 |
PURLClassifier.ipdl |
|
581 |
PURLClassifierInfo.ipdlh |
|
373 |
PURLClassifierLocal.ipdl |
|
943 |
PVsync.ipdl |
The PVsync is a sub-protocol in PBackground or PBrowser and it is used to
notify the vsync event from chrome to content process. It also provides the
interfaces for content to observe/unobserve vsync event notifications.
|
1307 |
PWindowGlobal.ipdl |
A PWindowGlobal actor has a lifetime matching that of a single Window Global,
specifically a |nsGlobalWindowInner|. These actors will form a parent/child
link either between the chrome/content process, or will be in-process, for
documents which are loaded in the chrome process.
|
9981 |
ReferrerInfoUtils.cpp |
|
1645 |
ReferrerInfoUtils.h |
|
789 |
RefMessageBodyService.cpp |
|
4571 |
RefMessageBodyService.h |
At the time a BroadcastChannel or MessagePort sends messages, we don't know
which process is going to receive it. Because of this, we need to check if
the message is able to cross the process boundary.
If the message contains objects such as SharedArrayBuffers, WASM modules or
ImageBitmaps, it can be delivered on the current process only.
Instead of sending the whole message via IPC, we send a unique ID, while the
message is kept alive by RefMessageBodyService, on the current process using
a ref-counted RefMessageBody object.
When the receiver obtains the message ID, it checks if the local
RefMessageBodyService knows that ID. If yes, the sender and the receiver are
on the same process and the delivery can be completed; if not, a
messageerror event has to be dispatched instead.
For MessagePort communication is 1-to-1 and because of this, the
receiver takes ownership of the message (RefMessageBodyService::Steal()).
If the receiver port is on a different process, RefMessageBodyService will
return a nullptr and a messageerror event will be dispatched.
For BroadcastChannel, the life-time of a message is a bit different than for
MessagePort. It has a 1-to-many communication and we could have multiple
receivers. Each one needs to deliver the message without taking full
ownership of it.
In order to support this feature, BroadcastChannel needs to call
RefMessageBodyService::SetMaxCount() to inform how many ports are allowed to
retrieve the current message, on the current process. Receivers on other
processes are not kept in consideration because they will not be able to
retrieve the message from RefMessageBodyService. When the last allowed
port has called RefMessageBodyService::GetAndCount(), the message is
released.
|
4720 |
RemoteBrowser.cpp |
|
939 |
RemoteBrowser.h |
An interface to control a browser hosted in another process.
This is used by nsFrameLoader to abstract between hosting a top-level remote
browser in the chrome process and hosting an OOP-iframe in a content process.
There are two concrete implementations that are used depending on whether
the nsFrameLoader is in the chrome or content process. A chrome process
nsFrameLoader will use BrowserHost, and a content process nsFrameLoader will
use BrowserBridgeHost.
|
2473 |
RemoteType.h |
|
1468 |
RemoteWebProgressRequest.cpp |
|
7416 |
RemoteWebProgressRequest.h |
|
1049 |
ServiceWorkerConfiguration.ipdlh |
|
548 |
SharedMap.cpp |
|
14362 |
SharedMap.h |
Together, the SharedMap and WritableSharedMap classes allow sharing a
dynamically-updated, shared-memory key-value store across processes.
The maps may only ever be updated in the parent process, via
WritableSharedMap instances. When that map changes, its entire contents are
serialized into a contiguous shared memory buffer, and broadcast to all child
processes, which in turn update their entire map contents wholesale.
Keys are arbitrary UTF-8 strings (currently exposed to JavaScript as UTF-16),
and values are structured clone buffers. Values are eagerly encoded whenever
they are updated, and lazily decoded each time they're read.
Updates are batched. Rather than each key change triggering an immediate
update, combined updates are broadcast after a delay. Changes are flushed
immediately any time a new process is created. Additionally, any time a key
is changed, a flush task is scheduled for the next time the event loop
becomes idle. Changes can be flushed immediately by calling the flush()
method.
Whenever a read-only SharedMap is updated, it dispatches a "change" event.
The event contains a "changedKeys" property with a list of all keys which
were changed in the last update batch. Change events are never dispatched to
WritableSharedMap instances.
|
13090 |
SharedMapChangeEvent.h |
|
1446 |
SharedMessageBody.cpp |
static |
9868 |
SharedMessageBody.h |
|
4140 |
SharedStringMap.cpp |
|
4335 |
SharedStringMap.h |
This class provides a simple, read-only key-value string store, with all
data packed into a single segment of memory, which can be shared between
processes.
Look-ups are performed by binary search of a static table in the mapped
memory region, and all returned strings are literals which reference the
mapped data. No copies are performed on instantiation or look-up.
Important: The mapped memory created by this class is persistent. Once an
instance has been initialized, the memory that it allocates can never be
freed before process shutdown. Do not use it for short-lived mappings.
|
7329 |
StringTable.h |
This file contains helper classes for creating and accessing compact string
tables, which can be used as the building blocks of shared memory databases.
Each string table a de-duplicated set of strings which can be referenced
using their character offsets within a data block and their lengths. The
string tables, once created, cannot be modified, and are primarily useful in
read-only shared memory or memory mapped files.
|
3585 |
StructuredCloneData.cpp |
|
10683 |
StructuredCloneData.h |
Wraps the non-reference-counted JSStructuredCloneData class to have a
reference count so that multiple StructuredCloneData instances can reference
a single underlying serialized representation.
As used by StructuredCloneData, it is an invariant that our
JSStructuredCloneData owns its buffers. (For the non-owning case,
StructuredCloneData uses mExternalData which holds a BufferList::Borrow()ed
read-only view of the data.)
|
10433 |
TabContext.cpp |
|
2992 |
TabContext.h |
TabContext encapsulates information about an iframe.
BrowserParent and BrowserChild both inherit from TabContext, and you can also
have standalone TabContext objects.
This class is immutable except by calling one of the protected
SetTabContext*() methods (and those methods can only be called once). See
also MutableTabContext.
|
5020 |
TabMessageTypes.h |
|
612 |
TabMessageUtils.h |
|
3656 |
tests |
|
|
UniqueContentParentKeepAlive.cpp |
|
2336 |
UniqueContentParentKeepAlive.h |
|
1564 |
URLClassifierChild.h |
|
2812 |
URLClassifierParent.cpp |
|
6139 |
URLClassifierParent.h |
|
2755 |
UserActivationIPCUtils.h |
|
910 |
VsyncChild.h |
|
767 |
VsyncMainChild.cpp |
|
2061 |
VsyncMainChild.h |
|
1539 |
VsyncParent.cpp |
|
3066 |
VsyncParent.h |
|
1635 |
VsyncWorkerChild.cpp |
|
2084 |
VsyncWorkerChild.h |
|
1518 |
WindowGlobalActor.cpp |
|
7305 |
WindowGlobalActor.h |
|
1857 |
WindowGlobalChild.cpp |
|
32631 |
WindowGlobalChild.h |
Actor for a single nsGlobalWindowInner. This actor is used to communicate
information to the parent process asynchronously.
|
8462 |
WindowGlobalParent.cpp |
|
59885 |
WindowGlobalParent.h |
A handle in the parent process to a specific nsGlobalWindowInner object.
|
16917 |
WindowGlobalTypes.ipdlh |
|
1293 |