The //net
stack is used on a variety of platforms and in a variety of open source projects. These different platforms and projects have differing degrees of support from //net
OWNERS as well as differing requirements for designs and technical requirements.
Note that this is a rough high-level overview of the major projects; as more of //net
is broken into consumable services/components as part of the Mojo servicificaiton efforts, it's likely that there will be a larger number of ‘variants’ of these projects with different constraints and features.
The Google Chrome browser, which lives in //chrome
, is the most important //net
consumer and shapes many of the core design decisions. In general, features that are not intended with or not compatible with the needs of the Google Chrome browser will have a very high bar for acceptance in //net
.
The feature matrix
The Chromium browser refers to the practice of certain Linux distributions to bundle the open-source components of Chrome Browser in //chrome
, branded as Chromium. This version is not distributed by Google, but by individual Linux distributions (primarily). Other distributions based on building Chromium for other platforms exist, although do not see as wide of usage.
Distinct from the Chromium browser, the Android WebView is itself based on the Chromium browser. On official Android devices running Android N or later, WebView is automatically updated when Google Chrome is updated on the device. For earlier devices, Android WebView is updated by the System WebView component.
Android WebView may also be used on non-official Android devices, such as those based on the Android Open Source Project but do not go through the Android Compatability Test Suite. Such releases have limited to no interaction with the Chromium projects, and so their capabilities cannot be conclusively documented.
For official Android devices, WebView has the following capabilities.
//content
EmbeddersIn addition to Chromium, there are a number of other of embedders of //content
, such as projects like Chromium Embedded Framework, Electron or Fuchsia's WebEngine. While //net
does not directly support these consumers, it does support the //content
embedding API that these projects use. Note that this excludes the content_shell test framework.
Cronet is a version of the //net
network stack for use in mobile applications on iOS and Android. While primarily targetting first-party Google applications, Cronet's status as an open-source project, similar to the Chromium browser, means that it may find itself embedded in a variety of other projects.
Unlike some of the other //net
consumers, Cronet does not necessarily implement “The Web Platform” (as the holistic set of user agent-focused features), and instead is more akin to an HTTP(s) client networking library.