1Blink Public API
2================
3
4This directory contains the public API for Blink. The API consists of a number
5of C++ header files, scripts, and GYP build files. We consider all other files
6in Blink to be implementation details, which are subject to change at any time
7without notice.
8
9The primary consumer of this API is Chromium's Content layer. If you are
10interested in using Blink, please consider interfacing with Blink via the
11Content layer rather than interfacing directly with this API.
12
13Compatibility
14-------------
15
16The API does not support binary compatibility. Instead, the API is intended to
17insulate the rest of the Chromium project from internal changes to Blink.  Over
18time, the API is likely to evolve in source-incompatible ways as Chromium's and
19Blink's needs change.
20
21Organization
22------------
23
24The API is organized into two parts:
25
26  - public/platform
27  - public/web
28
29The public/platform directory defines an abstract platform upon which Blink
30runs. Rather than communicating directly with the underlying operating system,
31Blink is designed to run in a sandbox and interacts with the operating system
32via the platform API. The central interface in this part of the API is
33Platform, which is a pure virtual interface from which Blink obtains many other
34interfaces.
35
36The public/web directory defines an interface to Blink's implementation of the
37web platform, including the Document Object Model (DOM). The central interface
38in this part of the API is WebView, which is a good starting point for
39exploring the API.
40
41Note that public/platform should not depend on public/web.
42
43Basic Types
44-----------
45
46The API does not use STL types, except for a small number of STL types that are
47used internally by Blink (e.g., std::pair). Instead, we use WTF containers to
48implement the API.
49
50The API uses some internal types (e.g., WebCore::Node). Typically, these types
51are forward declared and are opaque to consumers of the API. In other cases,
52the full definitions are available behind the BLINK_IMPLEMENTATION
53preprocessor macro. In both cases, we continue to regard these internal types
54as implementation details of Blink, and consumers of the API should not rely
55upon these types.
56
57Similarly, the API uses STL types outside of the BLINK_IMPLEMENTATION
58preprocessor macro, which is for the convenience of the consumer.
59
60Contact Information
61-------------------
62
63The public API also contains an OWNERS file, which lists a number of people who
64are knowledgeable about the API. If you have questions or comments about the
65API that might be of general interest to the Blink community at large, please
66consider directing your inquiry to blink-dev@chromium.org rather than to the
67OWNERS specifically.
68