This directory contains the public API for Blink. The API consists of a number of C++ header files, scripts, and GN build files. We consider all other files in Blink to be implementation details, which are subject to change at any time without notice.
The primary consumer of this API is Chromium's Content layer. If you are interested in using Blink, please consider interfacing with Blink via the Content layer rather than interfacing directly with this API.
The API does not support binary compatibility. Instead, the API is intended to insulate the rest of the Chromium project from internal changes to Blink. Over time, the API is likely to evolve in source-incompatible ways as Chromium‘s and Blink’s needs change.
The API is organized into two parts:
The public/platform directory defines an abstract platform upon which Blink runs. Rather than communicating directly with the underlying operating system, Blink is designed to run in a sandbox and interacts with the operating system via the platform API. The central interface in this part of the API is Platform, which is a pure virtual interface from which Blink obtains many other interfaces.
The public/web directory defines an interface to Blink's implementation of the web platform, including the Document Object Model (DOM). The central interface in this part of the API is WebView, which is a good starting point for exploring the API.
Note that public/platform should not depend on public/web.
The API does not use STL types, except for a small number of STL types that are used internally by Blink (e.g., std::pair). Instead, we use WTF containers to implement the API.
The API uses some internal types (e.g., blink::Node). Typically, these types are forward declared and are opaque to consumers of the API. In other cases, the full definitions are available behind the INSIDE_BLINK preprocessor macro. In both cases, we continue to regard these internal types as implementation details of Blink, and consumers of the API should not rely upon these types.
Similarly, the API uses STL types outside of the INSIDE_BLINK preprocessor macro, which is for the convenience of the consumer.
The public API also contains an OWNERS file, which lists a number of people who are knowledgeable about the API. If you have questions or comments about the API that might be of general interest to the Blink community at large, please consider directing your inquiry to email@example.com rather than to the OWNERS specifically.