This directory contains code that can be loosely categorized as “handling the renderer,” covering a wide range of topics (navigation, compositing, input, etc). Many of the classes represent a browser-side version of a renderer concept (e.g., RenderFrameHostImpl is the browser-side equivalent of RenderFrameImpl). Refer to the class-level comments on how each class relates to or interacts with the renderer.
Note that many of the key classes here are defined in content/public
and exposed to //content
embedders, with implementations living in content/browser/renderer_host
.
A non-exhaustive list of rough categories and descriptions for the code within renderer_host
is below. When adding something that falls into the miscellaneous category, consider if it belongs in a separate directory, either under content/browser/
or under content/browser/renderer_host
.
Allows the browser-side code to represent document and frame-tree related concepts, and communicate with the renderer-side.
Some important classes include:
For diagrams and explanations of how those classes fit with each other, see also this documentation and docs/frame_trees.md.
Represents child processes (e.g., renderers, GPU, etc) and their connection to the browser process.
An important class in this category is RenderProcessHost, which represents the browser side of the browser <-> renderer communication channel. There will be one RenderProcessHost per renderer process.
Navigation handling code, coordinating the browser & renderer from navigation start to finish. Also keeps track of the session history entries created by the committed navigations.
Some important classes include:
See also docs/navigation.md and docs/session_history.md.
Coordinates handling of input, display, and compositing between the browser, renderer, and GPU processes.
Some important classes include:
Examples: loading/networking, file/storage, plugins, UI, fonts, media, accessibility.
Code in this directory can't call up to the WebContents “layer,” except through delegate interfaces (e.g. RenderFrameHostDelegate). This is to separate out code that deals with the renderer process and code that deals with the tab. This is enforced by the DEPS.