Overall, the life of a URLRequest involves multiple layers and components in the browser’s networking stack, from high-level Javascript APIs to lower-level socket connections. The top-level network stack object is the URLRequestContext, which creates URLRequest objects used by direct consumers of the network stack. The HttpNetworkSession is another major network stack object that owns the HttpStreamFactory, socket pools, and HTTP/2 and QUIC session pools.
A URLRequest informs the consumer of important events for a request using two main interfaces: the URLRequest::Delegate interface and the NetworkDelegate interface. The network service, which wraps //net/ objects, provides cross-process network APIs and their implementations for the rest of Chrome. It uses the Mojo IPC layer, with proxy objects in the consumer process that implement the corresponding Mojo interfaces in the network service.
The life of a simple URLRequest involves requesting data from another process, creating a network::URLLoader in the network service, checking the cache and creating a network transaction object if necessary, creating an HttpStream to fetch the data, sending the request and reading the response headers and body, and finally destroying the URLRequest and closing all related Mojo pipes.