Name Description Size
BrowserBridgeChild.cpp static 8082
BrowserBridgeChild.h BrowserBridgeChild implements the child actor part of the PBrowserBridge protocol. See PBrowserBridge for more information. 3570
BrowserBridgeHost.cpp 3781
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. 2205
BrowserBridgeParent.cpp inprocess 9402
BrowserBridgeParent.h BrowserBridgeParent implements the parent actor part of the PBrowserBridge protocol. See PBrowserBridge for more information. 3912
BrowserChild.cpp 143499
BrowserChild.h BrowserChild implements the child actor part of the PBrowser protocol. See PBrowser for more information. 35459
BrowserHost.cpp attribute boolean docShellIsActive; 11910
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. 3316
BrowserParent.cpp static 138826
BrowserParent.h BrowserParent implements the parent actor part of the PBrowser protocol. See PBrowser for more information. 38334
CoalescedInputData.h 1546
CoalescedMouseData.cpp 4122
CoalescedMouseData.h 1762
CoalescedWheelData.cpp 2096
CoalescedWheelData.h 996
ColorPickerParent.cpp 2123
ColorPickerParent.h 1525
components.conf 803
ContentChild.cpp 145533
ContentChild.h !XP_WIN 31366
ContentParent.cpp 208204
ContentParent.h 53829
ContentProcess.cpp 6619
ContentProcess.h ContentProcess is a singleton on the content process which represents the main thread where tab instances live. 1390
ContentProcessManager.cpp static 4017
ContentProcessManager.h Add a new content process into the map. 2949
CPOWManagerGetter.h namespace jsipc 702
CSPMessageUtils.cpp 1534
CSPMessageUtils.h 849
DocShellMessageUtils.cpp 1521
DocShellMessageUtils.h 960
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. 7948
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. 1919
FilePickerParent.cpp 8603
FilePickerParent.h 2814
fuzztest 2
IdType.h 1551
jar.mn 611
JSWindowActor.cpp 11872
JSWindowActor.h 4401
JSWindowActorChild.cpp 4917
JSWindowActorChild.h 2390
JSWindowActorParent.cpp 4071
JSWindowActorParent.h 1955
JSWindowActorService.cpp static 16471
JSWindowActorService.h Object corresponding to a single actor protocol. This object acts as an Event listener for the actor which is called for events which would trigger actor creation. This object also can act as a carrier for methods and other state related to a single protocol managed by the JSWindowActorService. 4283
ManifestMessagesChild.jsm 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 4385
MemMapSnapshot.cpp 1206
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. 1609
MemoryReportRequest.cpp static 5832
MemoryReportRequest.h 2315
MemoryReportTypes.ipdlh 544
MMPrinter.cpp static 2369
MMPrinter.h MMPrinter_h 987
moz.build 5822
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. 2610
nsIRemoteWebProgress.idl Initialize the web progress. @param aManager The RemoteWebProgressManager for this remote nsIWebProgress. @param aIsTopLevel Whether or not this is a top-level web progress. 1094
nsIRemoteWebProgressRequest.idl 831
nsQueryActor.h 1567
PBrowser.ipdl 43096
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. 3844
PBrowserOrId.ipdlh 545
PColorPicker.ipdl 595
PContent.ipdl 59515
PContentPermission.ipdlh 423
PContentPermissionRequest.ipdl 609
PCycleCollectWithLogs.ipdl 496
PermissionMessageUtils.cpp 1499
PermissionMessageUtils.h Legacy IPC::Principal type. Use nsIPrincipal directly in new IPDL code. 2353
PFilePicker.ipdl 1294
PLoginReputation.ipdl 805
PPluginWidget.ipdl PPluginWidget - a nsIWidget'ish protocol for windowed plugins in e10s. On windows we create native widgets in chrome which we then manage from content. On the content side there's PluginWidgetProxy which implements nsIWidget. We hand this around layout and plugins code. Anything not dealt with via PluginWidgetProxy falls through to PuppetWidget. Native widget exists on the chrome side (PluginWidgetParent) attached to the browser window as a child. Window management calls are forwarded from PluginWidgetProxy to PluginWidgetParent over this interface. Note lifetime management for PluginWidgetProxy (the plugin widget) and the connection (PluginWidgetChild) are separated. PluginWidgetChild will be torn down first by the tab, followed by the deref'ing of the nsIWidget via layout. 2281
PProcessHangMonitor.ipdl 1383
PreallocatedProcessManager.cpp This singleton class implements the static methods on PreallocatedProcessManager. 10486
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. 2308
PrefsTypes.ipdlh 907
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. 42592
ProcessHangMonitor.h 2562
ProcessHangMonitorIPC.h 827
ProcessPriorityManager.cpp This singleton class does the work to implement the process priority manager in the main process. This class may not be used in child processes. (You can call StaticInit, but it won't do anything, and GetSingleton() will return null.) ProcessPriorityManager::CurrentProcessIsForeground() and ProcessPriorityManager::AnyProcessHasHighPriority() which can be called in any process, are handled separately, by the ProcessPriorityManagerChild class. 30628
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. 2952
PTabContext.ipdlh 2748
PURLClassifier.ipdl 565
PURLClassifierInfo.ipdlh 373
PURLClassifierLocal.ipdl 730
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. 3339
ReferrerInfoUtils.cpp 1645
ReferrerInfoUtils.h 819
remote-test.js eslint-env mozilla/frame-script 1539
RemoteBrowser.cpp 938
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. 2459
RemoteWebProgress.cpp 3000
RemoteWebProgress.h 1526
RemoteWebProgressRequest.cpp 7266
RemoteWebProgressRequest.h 1810
ServiceWorkerConfiguration.ipdlh 548
SharedMap.cpp 13907
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. 13184
SharedMapChangeEvent.h 1498
SharedStringMap.cpp 4079
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. 7111
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. 3309
StructuredCloneData.cpp 13572
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.) 12124
TabContext.cpp 8451
TabContext.h TabContext encapsulates information about an iframe that may be a mozbrowser. 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. 8007
TabMessageUtils.cpp 906
TabMessageUtils.h 4168
test.xul 9992
tests 29
URLClassifierChild.h 2848
URLClassifierParent.cpp 6136
URLClassifierParent.h 2781
UserActivationIPCUtils.h 911
WindowGlobalActor.cpp 4250
WindowGlobalActor.h 1634
WindowGlobalChild.cpp aInProcess 18351
WindowGlobalChild.h Actor for a single nsGlobalWindowInner. This actor is used to communicate information to the parent process asynchronously. 5606
WindowGlobalParent.cpp static 18402
WindowGlobalParent.h A handle in the parent process to a specific nsGlobalWindowInner object. 6730