Name Description Size Coverage
BrowserBridgeChild.cpp static 8026 -
BrowserBridgeChild.h BrowserBridgeChild implements the child actor part of the PBrowserBridge protocol. See PBrowserBridge for more information. 3870 -
BrowserBridgeHost.cpp 2745 -
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 11180 -
BrowserBridgeParent.h BrowserBridgeParent implements the parent actor part of the PBrowserBridge protocol. See PBrowserBridge for more information. 3930 -
BrowserChild.cpp 156951 -
BrowserChild.h BrowserChild implements the child actor part of the PBrowser protocol. See PBrowser for more information. 36538 -
BrowserHost.cpp attribute boolean renderLayers; 8320 -
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 152302 -
BrowserParent.h BrowserParent implements the parent actor part of the PBrowser protocol. See PBrowser for more information. 39329 -
ClonedErrorHolder.cpp 13121 -
ClonedErrorHolder.h 3793 -
CoalescedInputData.cpp 1535 -
CoalescedInputData.h The generation number of the latest state stored by the instance. It'll be incremented when the coalesced event data is retrieved or taken. So, this is useful to avoid handling same coalesced events twice when a nested event loop may handle this. NOTE: You should compare the value only with `==` or `!=`. Do not use `<` nor `>` because the value may circulate to 0 from UINT32_MAX. 2977 -
CoalescedMouseData.cpp 4216 -
CoalescedMouseData.h 1500 -
CoalescedTouchData.cpp 5643 -
CoalescedTouchData.h 1620 -
CoalescedWheelData.cpp 2096 -
CoalescedWheelData.h 970 -
ColorPickerParent.cpp 1857 -
ColorPickerParent.h 1876 -
components.conf 712 -
ContentChild.cpp 179104 -
ContentChild.h 36045 -
ContentParent.cpp 281926 -
ContentParent.h 70549 -
ContentParent_NotifyUpdatedDictionaries.h 844 -
ContentProcess.cpp XP_MACOSX && MOZ_SANDBOX 6467 -
ContentProcess.h ContentProcess is a singleton on the content process which represents the main thread where tab instances live. 1453 -
ContentProcessManager.cpp static 4414 -
ContentProcessManager.h Add a new content process into the map. 2861 -
CSPMessageUtils.cpp 1279 -
CSPMessageUtils.h 830 -
CustomElementTypes.ipdlh 963 -
DocShellMessageUtils.cpp 1592 -
DocShellMessageUtils.h 1994 -
DOMTypes.ipdlh The information required to complete a window creation request. 11011 -
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 1283 -
FilePickerParent.cpp 9735 -
FilePickerParent.h 3391 -
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 1785 -
JSOracleParent.cpp static 2699 -
JSOracleParent.h 1399 -
JSValidatorChild.cpp 7720 -
JSValidatorChild.h 2055 -
JSValidatorParent.cpp static 3552 -
JSValidatorParent.h 1214 -
JSValidatorUtils.cpp static 941 -
JSValidatorUtils.h 805 -
LoginDetectionService.cpp 5150 -
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 3229 -
MaybeDiscarded.h 4430 -
MemMapSnapshot.cpp 1124 -
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 returns a handle to it. The file descriptor for the resulting AutoMemMap can be shared among processes, to safely access a shared, read-only copy of the data snapshot. 1503 -
MemoryReportRequest.cpp static 5799 -
MemoryReportRequest.h 2289 -
MemoryReportTypes.ipdlh 544 -
MMPrinter.cpp static 3867 -
MMPrinter.h MMPrinter_h 1683 -
moz.build 7074 -
NativeThreadId.h 518 -
NavigationAPIIPCUtils.h 1250 -
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. 2328 -
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 1477 -
PBrowser.ipdl 46484 -
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 83261 -
PContentPermission.ipdlh 423 -
PContentPermissionRequest.ipdl 654 -
PCycleCollectWithLogs.ipdl 551 -
PermissionMessageUtils.cpp 1492 -
PermissionMessageUtils.h 1123 -
PFilePicker.ipdl 1366 -
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 -
PolicyContainerMessageUtils.cpp 1483 -
PolicyContainerMessageUtils.h 823 -
PProcessHangMonitor.ipdl 1424 -
PreallocatedProcessManager.cpp This singleton class implements the static methods on PreallocatedProcessManager. 14413 -
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 977 -
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. 43627 -
ProcessHangMonitor.h 2780 -
ProcessHangMonitorIPC.h 826 -
ProcessIsolation.cpp Helper class for caching the result of splitting prefs which are represented as a comma-separated list of strings. 51257 -
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. 4658 -
ProcessPriorityManager.cpp 34845 -
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 8131 -
PropertyBagUtils.h Limited nsIVariant support. Not all types are implemented and only nsIURI is implemented with nsIVariant::GetAsInterface. 1088 -
PTabContext.ipdlh 1372 -
PURLClassifier.ipdl 581 -
PURLClassifierInfo.ipdlh 572 -
PURLClassifierLocal.ipdl 748 -
PURLClassifierLocalByName.ipdl 767 -
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. 9648 -
ReferrerInfoUtils.cpp 1645 -
ReferrerInfoUtils.h 786 -
RefMessageBodyService.cpp 4530 -
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. 4658 -
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 14163 -
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. 12484 -
SharedMapChangeEvent.h 1445 -
SharedMessageBody.cpp 5821 -
SharedMessageBody.h 2208 -
SharedStringMap.cpp 4193 -
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. 7446 -
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 4461 -
StructuredCloneData.h IPC-aware reference-counted StructuredCloneHolder subclass that is usable as an IPDL data-type. If your use-case does not (potentially) involve IPC, then you should use StructuredCloneHolder or one of its other subclasses instead. A newly created StructuredCloneData is created in an uninitialized state, and can be initialized either by writing into it (e.g. by using StructuredCloneHolder::Write), or by deserializing into it (e.g. by using ReadIPCParams). 2508 -
TabContext.cpp 2993 -
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 583 -
TabMessageUtils.h 3323 -
tests -
UniqueContentParentKeepAlive.cpp 4751 -
UniqueContentParentKeepAlive.h 1858 -
URLClassifierChild.h 4115 -
URLClassifierParent.cpp 8107 -
URLClassifierParent.h 3645 -
UserActivationIPCUtils.h 907 -
VsyncChild.h 767 -
VsyncMainChild.cpp 2049 -
VsyncMainChild.h 1539 -
VsyncParent.cpp 3034 -
VsyncParent.h 1635 -
VsyncWorkerChild.cpp 2085 -
VsyncWorkerChild.h 1518 -
WindowGlobalActor.cpp 7274 -
WindowGlobalActor.h 1864 -
WindowGlobalChild.cpp 34563 -
WindowGlobalChild.h Actor for a single nsGlobalWindowInner. This actor is used to communicate information to the parent process asynchronously. 8734 -
WindowGlobalParent.cpp 63445 -
WindowGlobalParent.h A handle in the parent process to a specific nsGlobalWindowInner object. 17617 -
WindowGlobalTypes.ipdlh 1330 -