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 three parts: 25 26 - public/platform 27 - public/web 28 - public/testing 29 30The public/platform directory defines an abstract platform upon which Blink 31runs. Rather than communicating directly with the underlying operating system, 32Blink is designed to run in a sandbox and interacts with the operating system 33via the platform API. The central interface in this part of the API is 34Platform, which is a pure virtual interface from which Blink obtains many other 35interfaces. 36 37The public/web directory defines an interface to Blink's implementation of the 38web platform, including the Document Object Model (DOM). The central interface 39in this part of the API is WebView, which is a good starting point for 40exploring the API. 41 42Note that public/platform should not depend on public/web. 43 44The public/testing directory defines an interface for testing Blink. You can 45use this part of the API to load the TestRunner module used in Blink's test 46suite. 47 48Basic Types 49----------- 50 51The API does not use STL types, except for a small number of STL types that are 52used internally by Blink (e.g., std::pair). Instead, we use WTF containers to 53implement the API. 54 55The API uses some internal types (e.g., WebCore::Node). Typically, these types 56are forward declared and are opaque to consumers of the API. In other cases, 57the full definitions are available behind the BLINK_IMPLEMENTATION 58preprocessor macro. In both cases, we continue to regard these internal types 59as implementation details of Blink, and consumers of the API should not rely 60upon these types. 61 62Similarly, the API uses STL types outside of the BLINK_IMPLEMENTATION 63preprocessor macro, which is for the convenience of the consumer. 64 65Contact Information 66------------------- 67 68The public API also contains an OWNERS file, which lists a number of people who 69are knowledgeable about the API. If you have questions or comments about the 70API that might be of general interest to the Blink community at large, please 71consider directing your inquiry to blink-dev@chromium.org rather than to the 72OWNERS specifically. 73